SPDX-FileCopyrightText: 2013 Johnny Leya SPDX-FileCopyrightText: 2024 AlICe laboratory https://alicelab.be
SPDX-License-Identifier: GPL-3.0-or-later
BLENDER 2.68a r 58537 / MS windows64 bit
Important activer dans Userpreferences/Addons/Mesh/Add Mesh: ANT Landscape Curseur au centre Cube parasite à effacer
import bpy
import random
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete(use_global=False)print(
"-----------------------------------------------Random----------------------------------------------"
)AbriMunition C
X = random.randint(4, 9)
Y = random.randint(4, 9)
Z = random.randint(9, 50)
XB = random.randint(6, 30)
YB = random.randint(6, 30)
ZB = random.randint(4, 8)
XC = random.randint(10, 20)
YC = random.randint(10, 20)
ZC = random.randint(6, 8)
XD = random.randint(5, 15)
YD = random.randint(5, 15)
ZD = random.randint(5, 25)
XE = random.randint(9, 30)
YE = random.randint(9, 30)
ZE = random.randint(19, 50)
HS = random.randint(0, 30)
XS = random.randint(0, 10)
YS = random.randint(0, 10)
pos_X = 1
pos_Y = 1
pos_Z = 1
d = random.randint(13, 20)
Haz = random.randint(0, 15)
za = random.randint(0, 11)
Terra = random.randint(5, 11)
DDay = random.randint(2, 8)
WallWest = random.randint(0, 19)
Doll = random.randint(0, 10)
Doll2 = random.randint(0, 10)
Prob_Ann = random.randint(0, 10)
Prob_Mort = random.randint(0, 10)E = random.randint(0,1) angles des ailes A
Euler = [
-0.610865,
-0.610865,
-0.610865,
-0.645772,
-0.663225,
-0.680679,
-0.698132,
-0.715585,
-0.733038,
-0.750492,
-0.767945,
-0.785398,
-0.802852,
-0.820305,
-0.837758,
]
HasardE = random.randint(0, 14)
E = Euler[HasardE]U = random.randint(0,1) angles des ailes B
HasardU = random.randint(0, 14)
U = Euler[HasardU]print(
"-----------------------------------------------Base Volumétrique----------------------------------------------"
)def Cylindre(d, l, m, n, loclx, locly, loclz):
bpy.ops.mesh.primitive_cylinder_add(
vertices=d,
radius=1,
depth=2,
end_fill_type="NGON",
view_align=False,
enter_editmode=False,
location=(loclx, locly, loclz),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(l, m, n),
constraint_axis=(True, True, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)def Boite(o, p, q, r, s, t):
bpy.ops.mesh.primitive_cube_add(
radius=1,
view_align=False,
enter_editmode=False,
location=(o, p, q),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(r, s, t),
constraint_axis=(True, True, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)def Sphere(d, l1, m1, n1, loclx1, locly1, loclz1):
bpy.ops.mesh.primitive_uv_sphere_add(
segments=d,
ring_count=16,
size=1,
view_align=False,
enter_editmode=False,
location=(loclx1, locly1, loclz1),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(l1, m1, n1),
constraint_axis=(True, True, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
print(
"-----------------------------------------------Modificateurs----------------------------------------------"
)def Chanfrein(c):
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.subdivide(
number_cuts=10,
smoothness=0,
quadtri=False,
quadcorner="STRAIGHT_CUT",
fractal=0,
fractal_along_normal=0,
seed=0,
)Bevel pas encore au point
bpy.ops.object.modifier_add(type="BEVEL")
bpy.context.object.modifiers["Bevel"].limit_method = "ANGLE"
bpy.context.object.modifiers["Bevel"].angle_limit = 0.391986
bpy.ops.mesh.vertices_smooth(repeat=2, xaxis=True, yaxis=True, zaxis=True)
bpy.context.object.modifiers["Bevel"].width = c
bpy.ops.object.editmode_toggle()
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Bevel")def ChanfreinVariante(cc):
bpy.ops.object.modifier_add(type="BEVEL")
bpy.context.object.modifiers["Bevel"].width = cc
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Bevel")def Smooth(de):
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.subdivide(
number_cuts=4,
smoothness=0,
quadtri=False,
quadcorner="STRAIGHT_CUT",
fractal=0,
fractal_along_normal=0,
seed=0,
)
bpy.ops.mesh.vertices_smooth(repeat=1, xaxis=True, yaxis=True, zaxis=True)
bpy.ops.object.editmode_toggle()def Multiplication(g, h):
bpy.ops.object.modifier_add(type="ARRAY")
bpy.context.object.modifiers["Array"].count = g
bpy.context.object.modifiers["Array"].use_relative_offset = False
bpy.context.object.modifiers["Array"].use_constant_offset = True
bpy.context.object.modifiers["Array"].use_constant_offset = True
bpy.context.object.modifiers["Array"].constant_offset_displace[2] = h
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Array")def Soustraction(i, j):
bpy.context.scene.objects.active = bpy.data.objects[i]
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "DIFFERENCE"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects[j]
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Boolean")
bpy.context.scene.objects.active = bpy.data.objects[j]
bpy.ops.object.delete(use_global=False)def Union(ii):
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "UNION"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects[ii]
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Boolean")def Joindre(jjj):
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.join()def Deplacer(v, w, x):
bpy.ops.transform.translate(
value=(v, w, x),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)def Rotation(Z1, Z2):
bpy.context.object.rotation_euler[Z1] = Z2def Dupliquer(m12, m13, m14):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (m12, m13, m14),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"release_confirm": False,
},
)def Resize(m15, m16, m17):
bpy.ops.transform.resize(
value=(m15, m16, m17),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
print(
"-----------------------------------------------Nom----------------------------------------------"
)def Name(k):
bpy.context.object.name = k
bpy.context.object.data.name = kdef SelectObject(kk):
bpy.context.scene.objects.active = bpy.data.objects[kk]def SelectObjectContext(erd):
bpy.context.scene.objects[erd].select = Truedef Supprimer(kkk):
bpy.ops.object.delete(use_global=False)def Clean(pl):
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.remove_doubles(threshold=0.0001, use_unselected=False)
bpy.ops.object.editmode_toggle()
bpy.ops.object.paths_clear()print(
"---------------------------------------------FIRE CONTROL BAS OBSERVATOIRE UNIQUE C----------------------------------------------------"
)def FcuBase(p1):
Boite(pos_X, pos_Y, pos_Z + (ZC), XC, YC, ZC)
Name("FCUBASE")def FcuAngle(p3):
Boite(pos_X + (XC), pos_Y + (YC), pos_Z + (ZC), XC, YC / 2, ZC * 2)
Rotation(2, -0.785398)
Name("FcuAngleNegatif1")
Soustraction("FCUBASE", "FcuAngleNegatif1")
Boite(pos_X - (XC), pos_Y + (YC), pos_Z + (ZC), XC, YC / 2, ZC * 2)
Rotation(2, 0.785398)
Name("FcuAngleNegatif2")
Soustraction("FCUBASE", "FcuAngleNegatif2")
SelectObject("FCUBASE")
ChanfreinVariante(0.1)
Clean(1)def FcuRetrait(p4):
Boite(pos_X + (XC) - (Doll / 2), pos_Y - (YC), pos_Z + (ZC), XC, YC / 2.915, ZC * 2)
Name("FcuRetraitN1")
Soustraction("FCUBASE", "FcuRetraitN1")SelectObject(“FCUBASE”) ChanfreinVariante(0.1)
def FcuPoste(p6):
Boite(pos_X, pos_Y, pos_Z + (ZC * 2), XC / 2, YC / 2, ZC / 2.125)
ChanfreinVariante(0.1)
Name("FcuPoste")
Boite(pos_X, pos_Y, pos_Z + (ZC * 2) + ((ZC / 2.125) * 2), XC, YC, ZC / 2.125)
Name("FcuPosteNegatif1")
Rotation(1, 0.0698132)
Soustraction("FcuPoste", "FcuPosteNegatif1")
Boite(pos_X, pos_Y, pos_Z + (ZC * 2) + ((ZC / 2.125) * 2), XC, YC, ZC / 2.125)
Name("FcuPosteNegatif2")
Rotation(1, -0.0698132)
Soustraction("FcuPoste", "FcuPosteNegatif2")
Boite(pos_X, pos_Y, pos_Z + (ZC * 2) + ((ZC / 2.125) * 2), XC, YC, ZC / 2.125)
Name("FcuPosteNegatif3")
Rotation(0, 0.0698132)
Soustraction("FcuPoste", "FcuPosteNegatif3")
Boite(pos_X, pos_Y, pos_Z + (ZC * 2) + ((ZC / 2.125) * 2), XC, YC, ZC / 2.125)
Name("FcuPosteNegatif4")
Rotation(0, -0.0698132)
Soustraction("FcuPoste", "FcuPosteNegatif4")Ouverture
Boite(pos_X, pos_Y, pos_Z + (ZC * 2) + (ZC / 8.5) + (ZC / 77), XC, YC, ZC / 8.5)
Name("FcuPosteNegatif5")
Soustraction("FcuPoste", "FcuPosteNegatif5")
SelectObjectContext("FcuPoste")
SelectObject("FcuPoste")
Union("FCUBASE1")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FCUBASE1")
Supprimer(1)ouverture2
Boite(pos_X, pos_Y, pos_Z + (ZC * 2), XC / 3, YC / 3, (ZC / 4) + (ZC / 10))
Name("FcuPosteOuverture")
Soustraction("FcuPoste", "FcuPosteOuverture")Appuis1
Boite(
pos_X,
pos_Y,
pos_Z + (ZC * 2) + (ZC / 8.5) + (ZC / 77),
XC / 3 + (XC / 54),
YC / 3 + (YC / 54),
ZC / 8,
)
Name("FcuPosteOuverture1")
Boite(
pos_X,
pos_Y,
pos_Z + (ZC * 2) + (ZC / 8.5) + (ZC / 77),
XC / 3 + (XC / 30),
YC / 3 + (YC / 30),
ZC / 8,
)
Name("FcuPosteOuverture2")
Union("FcuPosteOuverture1")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPosteOuverture1")
Supprimer(1)EvidementOuvetures
Boite(
pos_X,
pos_Y,
pos_Z + (ZC * 2) + (ZC / 8.5) + (ZC / 77),
XC,
YC / 3 + (YC / 54),
ZC / 2,
)
Name("FcuPosteVide1")
Soustraction("FcuPosteOuverture2", "FcuPosteVide1")
Boite(
pos_X,
pos_Y,
pos_Z + (ZC * 2) + (ZC / 8.5) + (ZC / 77),
XC / 3 + (XC / 54),
YC,
ZC / 2,
)
Name("FcuPosteVide2")
Soustraction("FcuPosteOuverture2", "FcuPosteVide2")
SelectObjectContext("FcuPosteOuverture2")
SelectObject("FcuPosteOuverture2")
Union("FcuPoste")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPoste")
Supprimer(1)accès
Boite(
pos_X + (XC / 2),
pos_Y - (YC / 2),
pos_Z + (ZC) + (ZC / 9) + (ZC / 2) + 1,
0.8,
YC / 3 + (YC / 30),
ZC / 2.56,
)
Name("FcuPostePorte1")
Soustraction("FcuPosteOuverture2", "FcuPostePorte1")def FcuBec(p2):
Sphere(
d * 10,
XC / 2.3,
YC / 2.3,
ZC - 2,
pos_X,
pos_Y + (YC),
pos_Z + (ZC * 2) - (ZC / 2),
)
Name("Chapeau")
Cylindre(
d * 10, XC / 2.3, YC / 2.3, ZC, pos_X, pos_Y + (YC), pos_Z + (ZC) - (ZC / 2)
)
Name("ChapeauBase")
Union("Chapeau")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("Chapeau")
Supprimer(1)
Boite(pos_X, pos_Y, pos_Z + (ZC * 3), XC * 2, YC * 2, ZC)ChanfreinVariante(0.1)
Name("Tour Palier2")
Soustraction("ChapeauBase", "Tour Palier2")Cylindre(d3,XC/2.3,YC/2.3, ZC/15,pos_X, pos_Y+(YC), pos_Z+(ZC2)-ZC/1.15) Cylindre(d3,XC,YC, ZC/15,pos_X, pos_Y+(YC), pos_Z+(ZC2)-ZC/1.15)
Cylindre(
d * 10, XC, YC, ZC, pos_X, pos_Y + (YC), pos_Z + (ZC) - ZC / 1.15 + (ZC / 15)
)
Name("OuvertureBec")
Soustraction("ChapeauBase", "OuvertureBec")Cylindre(d*3,XC/2.3,YC/2.3, ZC,pos_X, pos_Y+(YC), pos_Z+(ZC)-ZC/1.15-(ZC/15))
Cylindre(
d * 10,
XC / 1.78,
YC / 1.78,
ZC,
pos_X,
pos_Y + (YC),
pos_Z + (ZC) - ZC / 1.15 - (ZC / 15),
)
Name("GrosBec")Cylindre(d3,XC/2.3,YC/2.3, ZC,pos_X, pos_Y+(YC), pos_Z+(ZC)-ZC/1.15+(ZC/15)) Cylindre(d3,XC/2.3,YC/2.3, ZC/2.7,pos_X, pos_Y+(YC), pos_Z+(ZC)-ZC/1.15-(ZC/15)+(ZC/2.7)) Cylindre(d*3,XC/2.3,YC/2.3, ZC,pos_X, pos_Y+(YC), pos_Z+(ZC)-ZC/1.15-(ZC/15))
Boite(pos_X, pos_Y, pos_Z - (ZC) + (ZC / 3.34), XC * 2, YC * 2, ZC)
Name("BasBec")
Soustraction("GrosBec", "BasBec")
SelectObjectContext("GrosBec")
SelectObject("GrosBec")
Union("ChapeauBase")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("ChapeauBase")
Supprimer(1)
Name("BecBrut")Ouverture
Cylindre(
10,
XC / 2.8,
YC / 2.8,
ZC / 9,
pos_X,
pos_Y + (YC),
pos_Z + (ZC * 2) - ZC / 1.15,
)
Name("BecDent1")
Cylindre(10, XC, YC, ZC / 22, pos_X, pos_Y + (YC), pos_Z + (ZC * 2) - ZC / 1.15)
Name("BecDent1Negatif")
Soustraction("BecDent1", "BecDent1Negatif")
SelectObjectContext("BecDent1")
SelectObject("BecDent1")
Union("BecBrut")
SelectObjectContext("BecDent1")
SelectObject("BecDent1")
Name("BecBrut1")
SelectObject("BecBrut")
Cylindre(
10, XC / 3, YC / 3, ZC / 9, pos_X, pos_Y + (YC), pos_Z + (ZC * 2) - ZC / 1.15
)
Name("BecDent2")
Cylindre(10, XC, YC, ZC / 32, pos_X, pos_Y + (YC), pos_Z + (ZC * 2) - ZC / 1.15)
Name("BecDent1Negati2")
Soustraction("BecDent2", "BecDent1Negati2")
SelectObjectContext("BecDent2")
SelectObject("BecDent2")
Union("BecBrut1")
SelectObjectContext("BecDent2")
SelectObject("BecDent2")
Name("BecBrut2")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("BecBrut1")
SelectObjectContext("BecBrut1")
Supprimer(1)
SelectObject("BecBrut")
SelectObjectContext("BecBrut")
Supprimer(1)Evidement
Cylindre(
10,
XC / 3.5,
YC / 3.5,
ZC / 6,
pos_X,
pos_Y + (YC),
pos_Z + (ZC * 2) - ZC / 1.15,
)
Name("BecBrutNegatif")
Soustraction("BecBrut2", "BecBrutNegatif")
SelectObjectContext("BecBrut2")
SelectObject("BecBrut2")
Union("FCUBASE")
Name("FCUBASE1")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("FCUBASE")
SelectObjectContext("FCUBASE")
Supprimer(1)
print(
"---------------------------------------------DEFINITION FIRE CONTROL BAS OBSERVATOIRE UNIQUE C----------------------------------------------------"
)def FcbC(p5):
FcuBase(1)
FcuRetrait(1)
if XC >= 12:
FcuAngle(1)
else:
SelectObject("FCUBASE")
ChanfreinVariante(0.1)
FcuBec(1)
FcuPoste(1)FcbC(1)
print(
"---------------------------------------------FIRE CONTROL BAS OBSERVATOIRE MULTIPLE ----------------------------------------------------"
)def FcuBaseM(p8):
Boite(pos_X, pos_Y, pos_Z + (ZD), XD, YD, ZD)
Name("FCUBASEM")def FcuMPoste(
LOCX,
LOCY,
LOCZ,
LOCZ1,
LOCZ2,
DIMX1,
DIMY1,
DIMZ1,
DIMX2,
DIMY2,
DIMZ2,
DIMZ3,
DIMX4,
DIMY4,
DIMZ4,
NomBase,
LOCZ3,
DIMX5,
DIMY5,
DIMZ5,
DIMX6,
DIMY6,
DIMZ6,
):
Boite(LOCX, LOCY, LOCZ, DIMX1, DIMY1, DIMZ1)
ChanfreinVariante(0.1)
Name("FcuPoste")
Boite(LOCX, LOCY, LOCZ + LOCZ1, DIMX2, DIMY2, DIMZ2)
Name("FcuPosteNegatif1")
Rotation(1, 0.0698132)
Soustraction("FcuPoste", "FcuPosteNegatif1")
Boite(LOCX, LOCY, LOCZ + LOCZ1, DIMX2, DIMY2, DIMZ2)
Name("FcuPosteNegatif2")
Rotation(1, -0.0698132)
Soustraction("FcuPoste", "FcuPosteNegatif2")
Boite(LOCX, LOCY, LOCZ + LOCZ1, DIMX2, DIMY2, DIMZ2)
Name("FcuPosteNegatif3")
Rotation(0, 0.0698132)
Soustraction("FcuPoste", "FcuPosteNegatif3")
Boite(LOCX, LOCY, LOCZ + LOCZ1, DIMX2, DIMY2, DIMZ2)
Name("FcuPosteNegatif4")
Rotation(0, -0.0698132)
Soustraction("FcuPoste", "FcuPosteNegatif4")
Boite(LOCX, LOCY, LOCZ + LOCZ2, DIMX2, DIMY2, DIMZ3)
Name("FcuPosteNegatif5")
Soustraction("FcuPoste", "FcuPosteNegatif5")
SelectObjectContext("FcuPoste")
SelectObject("FcuPoste")
Union(NomBase)
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext(NomBase)
Supprimer(1)ouverture2
Boite(LOCX, LOCY, LOCZ, DIMX4, DIMY4, DIMZ4)
Name("FcuPosteOuverture")
Soustraction("FcuPoste", "FcuPosteOuverture")ICIAppuis1
Boite(LOCX, LOCY, LOCZ + LOCZ3, DIMX5, DIMY5, DIMZ5)
Name("FcuPosteOuverture1")
Boite(LOCX, LOCY, LOCZ + LOCZ3, DIMX5, DIMY6, DIMZ5)
Name("FcuPosteOuverture2")
Union("FcuPosteOuverture1")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPosteOuverture1")
Supprimer(1)EvidementOuvetures
Boite(LOCX, LOCY, LOCZ + LOCZ3, DIMX1, DIMY5, DIMZ6)
Name("FcuPosteVide1")
Soustraction("FcuPosteOuverture2", "FcuPosteVide1")
Boite(LOCX, LOCY, LOCZ + LOCZ3, DIMX6, DIMY1 * 2, DIMZ6)
Name("FcuPosteVide2")
Soustraction("FcuPosteOuverture2", "FcuPosteVide2")
SelectObjectContext("FcuPosteOuverture2")
SelectObject("FcuPosteOuverture2")
Union("FcuPoste")
Clean(1)
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPoste")
Supprimer(1)def FcuPosteMB(p6):
Boite(pos_X, pos_Y, pos_Z + (ZD * 2) + (ZD / 6), XD / 2, YD / 2, ZD / 6)
ChanfreinVariante(0.1)
Name("FcuPoste")
Boite(pos_X, pos_Y, pos_Z + (ZD * 2), XD, YD, ZD / 6)
Name("FcuPosteNegatif1")
Soustraction("FcuPoste", "FcuPosteNegatif1")
Boite(
pos_X,
pos_Y,
pos_Z + (ZD * 2),
(XD / 2) / 1.38,
(YD / 2) / 1.38,
(ZD / 6) + (ZD / 12),
)
Name("FcuPosteDetail")
Union("FcuPoste")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPoste")
Supprimer(1)
Boite(pos_X, pos_Y, pos_Z + (ZD * 2) + (ZD / 12), XD * 2, YD, ZD / 18)
Name("FcuPosteNegatif2")
Soustraction("FcuPosteDetail", "FcuPosteNegatif2")
Boite(
pos_X,
pos_Y,
pos_Z + (ZD * 2),
(XD / 2) / 2.173,
(YD / 2) / 2.173,
(ZD / 6) + (ZD / 16),
)
Name("FcuPosteVide")
Soustraction("FcuPosteDetail", "FcuPosteVide")
Boite(
pos_X,
pos_Y,
pos_Z + (ZD * 2),
(XD / 2) / 2.6,
(YD / 2) / 2.6,
(ZD / 6) + (ZD / 32),
)
Name("FcuPosteVide2")
Soustraction("FCUBASEM", "FcuPosteVide2")Appuis
Boite(
pos_X,
pos_Y,
pos_Z + (ZD * 2),
(XD / 2) / 1.59,
(YD / 2) / 1.59,
(ZD / 6) + (ZD / 14),
)
Name("FcuPosteAppuiExt")AppuisNegatifs
Boite(pos_X, pos_Y, pos_Z + (ZD * 2), XD * 2, (YD / 2) / 1.87, ZD)
Name("FcuPosteAppuiNegatif")
Soustraction("FcuPosteAppuiExt", "FcuPosteAppuiNegatif")
Boite(pos_X, pos_Y, pos_Z + (ZD * 2), (XD / 2) / 1.87, YD * 2, ZD)
Name("FcuPosteAppuiNegatif2")
Soustraction("FcuPosteAppuiExt", "FcuPosteAppuiNegatif2")
SelectObject("FcuPosteDetail")
Union("FcuPosteAppuiExt")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPosteAppuiExt")
Supprimer(1)
SelectObject("FCUBASEM")
Clean(1)
Name("FCUTourMB")
Union("FcuPosteDetail")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPosteDetail")
Supprimer(1)def FcuPosteMC(p6):
Boite(pos_X, pos_Y - (YD / 2), pos_Z + (ZD * 2) + (ZD / 6), XD, YD / 2, ZD / 6)
ChanfreinVariante(0.1)
Name("FcuPoste")
Boite(pos_X, pos_Y - (YD / 2), pos_Z + (ZD * 2), XD * 2, YD, ZD / 6)
Name("FcuPosteNegatif1")
Soustraction("FcuPoste", "FcuPosteNegatif1")
Boite(
pos_X,
pos_Y - (YD / 2),
pos_Z + (ZD * 2),
XD / 1.38,
(YD / 2) / 1.38,
(ZD / 6) + (ZD / 12),
)
Name("FcuPosteDetail")
Union("FcuPoste")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPoste")
Supprimer(1)
Boite(pos_X, pos_Y - (YD / 2), pos_Z + (ZD * 2) + (ZD / 12), XD * 2, YD, ZD / 18)
Name("FcuPosteNegatif2")
Soustraction("FcuPosteDetail", "FcuPosteNegatif2")
Boite(
pos_X,
pos_Y - (YD / 2),
pos_Z + (ZD * 2),
XD / 2.173,
(YD / 2) / 2.173,
(ZD / 6) + (ZD / 16),
)
Name("FcuPosteVide")
Soustraction("FcuPosteDetail", "FcuPosteVide")
Boite(
pos_X,
pos_Y - (YD / 2),
pos_Z + (ZD * 2),
XD / 2.6,
(YD / 2) / 2.6,
(ZD / 6) + (ZD / 32),
)
Name("FcuPosteVide2")
Clean(1)
Soustraction("FCUBASEM", "FcuPosteVide2")Appuis
Boite(
pos_X,
pos_Y - (YD / 2),
pos_Z + (ZD * 2),
XD / 1.59,
(YD / 2) / 1.59,
(ZD / 6) + (ZD / 14),
)
Name("FcuPosteAppuiExt")AppuisNegatifs
Boite(pos_X, pos_Y - (YD / 2), pos_Z + (ZD * 2), XD * 2, (YD / 2) / 1.87, ZD)
Name("FcuPosteAppuiNegatif")
Soustraction("FcuPosteAppuiExt", "FcuPosteAppuiNegatif")
Boite(pos_X, pos_Y - (YD / 2), pos_Z + (ZD * 2), XD / 1.87, YD * 2, ZD)
Name("FcuPosteAppuiNegatif2")
Soustraction("FcuPosteAppuiExt", "FcuPosteAppuiNegatif2")
SelectObject("FcuPosteDetail")
Union("FcuPosteAppuiExt")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPosteAppuiExt")
Supprimer(1)
SelectObject("FCUBASEM")
Clean(1)
Name("FCUTourMC")
Union("FcuPosteDetail")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPosteDetail")
Supprimer(1)def FcuPosteMD(p6):Boite(pos_X, pos_Y-(YD/4), pos_Z+(ZD*3),XD,YD-(YD/4),ZD)
Boite(
pos_X, pos_Y - (YD / 4), pos_Z + (ZD * 2) + (ZD / 6), XD, YD - (YD / 4), ZD / 6
)
ChanfreinVariante(0.1)
Name("FcuPoste")
Boite(pos_X, pos_Y - (YD / 4), pos_Z + (ZD * 2), XD * 2, YD * 2, ZD / 6)
Name("FcuPosteNegatif1")
Soustraction("FcuPoste", "FcuPosteNegatif1")
Boite(
pos_X,
pos_Y - (YD / 4),
pos_Z + (ZD * 2),
XD / 1.38,
(YD - (YD / 4)) / 1.38,
(ZD / 6) + (ZD / 12),
)
Name("FcuPosteDetail")
Union("FcuPoste")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPoste")
Supprimer(1)
Boite(pos_X, pos_Y - (YD / 4), pos_Z + (ZD * 2) + (ZD / 12), XD * 2, YD, ZD / 18)
Name("FcuPosteNegatif2")
Soustraction("FcuPosteDetail", "FcuPosteNegatif2")
Boite(
pos_X,
pos_Y - (YD / 4),
pos_Z + (ZD * 2),
XD / 2.173,
(YD - (YD / 4)) / 2.173,
(ZD / 6) + (ZD / 16),
)
Name("FcuPosteVide")
Soustraction("FcuPosteDetail", "FcuPosteVide")
Boite(
pos_X,
pos_Y - (YD / 4),
pos_Z + (ZD * 2),
XD / 2.6,
(YD - (YD / 4)) / 2.6,
(ZD / 6) + (ZD / 32),
)
Name("FcuPosteVide2")
Soustraction("FCUBASEM", "FcuPosteVide2")Appuis
Boite(
pos_X,
pos_Y - (YD / 4),
pos_Z + (ZD * 2),
XD / 1.59,
(YD - (YD / 4)) / 1.59,
(ZD / 6) + (ZD / 14),
)
Name("FcuPosteAppuiExt")AppuisNegatifs
Boite(pos_X, pos_Y - (YD / 4), pos_Z + (ZD * 2), XD * 2, (YD - (YD / 4)) / 1.87, ZD)
Name("FcuPosteAppuiNegatif")
Soustraction("FcuPosteAppuiExt", "FcuPosteAppuiNegatif")
Boite(pos_X, pos_Y - (YD / 4), pos_Z + (ZD * 2), XD / 1.87, YD * 2, ZD)
Name("FcuPosteAppuiNegatif2")
Soustraction("FcuPosteAppuiExt", "FcuPosteAppuiNegatif2")
SelectObject("FcuPosteDetail")
Union("FcuPosteAppuiExt")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPosteAppuiExt")
Supprimer(1)
SelectObject("FCUBASEM")
Clean(1)
Name("FCUTourMD")
Union("FcuPosteDetail")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FcuPosteDetail")
Supprimer(1)def FcuExtensionM(p10):
Boite(
pos_X, pos_Y + YD + (YD / 2.72), pos_Z + (ZD / 1.32), XD, YD / 2.72, ZD / 1.32
)
Name("FCUEXTENSION1")
Union("FCUTourMC")
Clean(1)
Name("FCUTourMCE")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FCUTourMC")
Supprimer(1)Rajout
Boite(
pos_X,
pos_Y + YD + ((YD / 2.72)) * 2 + (YD / 10.41),
pos_Z + (ZD / 1.32),
XD,
YD / 10.41,
ZD / 1.32,
)
Name("FCUEXTENSION2")
Union("FCUTourMCE")
Clean(1)
Name("FCUTourMCE1")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FCUTourMCE")
Supprimer(1)def FcuExtensionDentM(p11):
Boite(
pos_X,
pos_Y + YD,
pos_Z + ((ZD / 1.32) * 2) + (ZD / 8.33),
XD * 2,
YD / 1.36,
ZD / 8.33,
)
Name("FCUDOUVERTURENENEGATIF1")
Soustraction("FCUTourMCE1", "FCUDOUVERTURENENEGATIF1")DEUXIEMEOUVERTURE
Boite(
pos_X,
pos_Y + YD + ((YD / 2.72) * 2),
pos_Z + (ZD) + (ZD / 3.29),
XD * 2,
(YD / 4.03) * 2,
ZD / 11.03,
)
Name("FCUDOUVERTURENENEGATIF2")
Soustraction("FCUTourMCE1", "FCUDOUVERTURENENEGATIF2")Dents de ces ouvertures Boite(pos_X, pos_Y+YD/2-(YD/9.6), pos_Z+((ZD/1.32)*2)+(ZD/8.33),XD/2.21,YD/2,ZD/7)
Boite(
pos_X,
pos_Y + YD / 2 - (YD / 25),
pos_Z + ((ZD / 1.32) * 2) + (ZD / 8.33),
XD / 1.5,
YD / 2,
ZD / 7,
)
Name("FCUDDENT1")
Boite(
pos_X,
pos_Y + YD / 2 - (YD / 25),
pos_Z + ((ZD / 1.32) * 2) + (ZD / 8.33),
XD,
YD,
ZD / 8.33 - (ZD / 113.64),
)
Name("FCUDDENT1Negatif")
Soustraction("FCUDDENT1", "FCUDDENT1Negatif")
Boite(
pos_X,
pos_Y + YD / 2 - (YD / 14.11),
pos_Z + ((ZD / 1.32) * 2) + (ZD / 8.33),
XD / 1.8 - (XD / 20.86),
YD / 2,
ZD / 7,
)
Name("FCUDDENT2")
Boite(
pos_X,
pos_Y + YD / 2 - (YD / 14.11),
pos_Z + ((ZD / 1.32) * 2) + (ZD / 8.33),
XD,
YD,
ZD / 8.33 - (ZD / 56.82),
)
Name("FCUDDENT2Negatif")
Soustraction("FCUDDENT2", "FCUDDENT2Negatif")
SelectObject("FCUDDENT2")
Union("FCUDDENT1")
Clean(1)
SelectObjectContext("FCUDDENT1")
Supprimer(1)
SelectObject("FCUTourMCE1")
Union("FCUDDENT2")
Clean(1)
SelectObjectContext("FCUDDENT2")
Supprimer(1)
Boite(
pos_X,
pos_Y + YD / 2 - (YD / 9.6),
pos_Z + ((ZD / 1.32) * 2) + (ZD / 8.33),
XD / 2.21,
YD / 2,
ZD / 5,
)
Name("FCUDDENT3")
Soustraction("FCUTourMCE1", "FCUDDENT3")def FcuExtensionDentM2(p11):Boite(pos_X, pos_Y+YD/2-(YD/25), pos_Z+((ZD/1.32)*2)+(ZD/8.33),XD,YD,ZD/8.33-(ZD/113.64))
Boite(
pos_X,
pos_Y + YD + (YD / 2.72) - (YD / 25),
pos_Z + (ZD) + (ZD / 3.29),
XD / 2.15,
YD / 2.72,
ZD / 9,
)
Name("FCUDDENT1")
Boite(
pos_X,
pos_Y + YD + (YD / 2.72) - (YD / 25),
pos_Z + (ZD) + (ZD / 3.29),
XD,
YD,
ZD / 11.03 - (ZD / 113.64),
)
Name("FCUDDENT1Negatif")
Soustraction("FCUDDENT1", "FCUDDENT1Negatif")
Boite(
pos_X,
pos_Y + YD + (YD / 2.72) - (YD / 14.11),
pos_Z + (ZD) + (ZD / 3.29),
XD / 2.15 - (XD / 20.86),
YD / 2.72,
ZD / 9,
)
Name("FCUDDENT2")
Boite(
pos_X,
pos_Y + YD + (YD / 2.72) - (YD / 14.11),
pos_Z + (ZD) + (ZD / 3.29),
XD,
YD,
ZD / 11.03 - (ZD / 56.82),
)
Name("FCUDDENT2Negatif")
Soustraction("FCUDDENT2", "FCUDDENT2Negatif")
SelectObject("FCUDDENT2")
Union("FCUDDENT1")
Clean(1)
SelectObjectContext("FCUDDENT1")
Supprimer(1)
SelectObject("FCUTourMCE1")
Union("FCUDDENT2")
Clean(1)
SelectObjectContext("FCUDDENT2")
Supprimer(1)
Boite(
pos_X,
pos_Y + YD + (YD / 2.72) - (YD / 9.6),
pos_Z + (ZD) + (ZD / 3.29),
XD / 4.05,
YD / 2.72,
ZD / 8,
)
Name("FCUDDENT3")
Soustraction("FCUTourMCE1", "FCUDDENT3")def FcuObliqueM(p8):HAUT
Boite(
pos_X + XD + (XD / 2) - (XD / 6),
pos_Y + (YD),
pos_Z + (ZD * 2),
XD / 2,
YD * 2,
ZD / 3,
)
Name("FCUObliqueM1")
Rotation(2, 0.20944)
Soustraction("FCUTourMCE1", "FCUObliqueM1")Gauche
Boite(
pos_X - XD - (XD / 2) + (XD / 6),
pos_Y + (YD),
pos_Z + (ZD * 2),
XD / 2,
YD * 2,
ZD / 3,
)
Name("FCUObliqueM2")
Rotation(2, -0.20944)
Soustraction("FCUTourMCE1", "FCUObliqueM2")BAS Reprendre pour l’autre
Boite(
pos_X + XD + (XD / 2) - (XD / 6),
pos_Y + YD + ((YD / 2.72)) * 2 + ((YD / 10.41) * 2),
pos_Z + ((ZD / 1.32) * 2),
XD / 2,
(YD / 4.03) * 2 + ((YD / 10.41) * 2),
ZD / 7,
)
Name("FCUObliqueM2Droit")
Soustraction("FCUTourMCE1", "FCUObliqueM2Droit")
Boite(
pos_X - XD - (XD / 2) + (XD / 6),
pos_Y + YD + ((YD / 2.72)) * 2 + ((YD / 10.41) * 2),
pos_Z + ((ZD / 1.32) * 2),
XD / 2,
(YD / 4.03) * 2 + ((YD / 10.41) * 2),
ZD / 7,
)
Name("FCUObliqueM2GAUCHE")
Soustraction("FCUTourMCE1", "FCUObliqueM2GAUCHE")HAUT
Boite(
pos_X,
pos_Y + YD + ((YD / 2.72)) * 2 + ((YD / 10.41) * 2),
pos_Z + ((ZD / 1.32) * 2),
XD,
YD / 5.205,
ZD / 7,
)
Name("FCUObliqueDevant")
Soustraction("FCUTourMCE1", "FCUObliqueDevant") Boite(
pos_X + XD + (XD / 2) - (XD / 3),
pos_Y + YD + ((YD / 2.72)) * 2 + ((YD / 10.41) * 2),
pos_Z + ((ZD / 1.32) * 2),
XD / 2,
(YD / 6) * 2 + ((YD / 10.41) * 2),
ZD / 7,
)
Name("FCUObliqueM2Droit")
Rotation(2, 0.20944)
Soustraction("FCUTourMCE1", "FCUObliqueM2Droit")Gauche
Boite(
pos_X - XD - (XD / 2) + (XD / 3),
pos_Y + YD + ((YD / 2.72)) * 2 + ((YD / 10.41) * 2),
pos_Z + ((ZD / 1.32) * 2),
XD / 2,
(YD / 6) * 2 + ((YD / 10.41) * 2),
ZD / 7,
)
Name("FCUObliqueM2Gauche")
Rotation(2, -0.20944)
Soustraction("FCUTourMCE1", "FCUObliqueM2Gauche")Nettoyage
SelectObject("FCUTourMCE1")
SelectObjectContext("FCUTourMCE1")
Clean(1)def FcuDroitM(p8):
Boite(
pos_X + XD + (XD / 2) - (XD / 6),
pos_Y + YD + ((YD / 2.72)) * 2 + ((YD / 10.41) * 2),
pos_Z + ((ZD / 1.32) * 2),
XD / 2,
(YD / 4.03) * 2 + ((YD / 10.41) * 2),
ZD / 7,
)
Name("FCUObliqueM2Droit")
Soustraction("FCUTourMCE1", "FCUObliqueM2Droit")
Boite(
pos_X - XD - (XD / 2) + (XD / 6),
pos_Y + YD + ((YD / 2.72)) * 2 + ((YD / 10.41) * 2),
pos_Z + ((ZD / 1.32) * 2),
XD / 2,
(YD / 4.03) * 2 + ((YD / 10.41) * 2),
ZD / 7,
)
Name("FCUObliqueM2GAUCHE")
Soustraction("FCUTourMCE1", "FCUObliqueM2GAUCHE")HAUT
Boite(
pos_X,
pos_Y + YD + ((YD / 2.72)) * 2 + ((YD / 10.41) * 2),
pos_Z + ((ZD / 1.32) * 2),
XD,
YD / 5.205,
ZD / 7,
)
Name("FCUObliqueDevant")
Soustraction("FCUTourMCE1", "FCUObliqueDevant")
SelectObject("FCUTourMCE1")
SelectObjectContext("FCUTourMCE1")
Clean(1)def FcuExtensionBas(d):
Boite(
pos_X + XD + (XD / 5.705),
pos_Y
+ (YD / 2.72)
+ (YD / 10.41)
- (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2),
pos_Z + (ZD / 1.32),
(XD / 5.705),
YD + (YD / 2.72) + (YD / 10.41) - (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2),
ZD / 1.32,
)
Name("FCUEXTDroiteM")Gauche
Boite(
pos_X - XD - (XD / 5.705),
pos_Y
+ (YD / 2.72)
+ (YD / 10.41)
- (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2),
pos_Z + (ZD / 1.32),
(XD / 5.705),
YD + (YD / 2.72) + (YD / 10.41) - (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2),
ZD / 1.32,
)
Name("FCUEXTGaucheM")arriere
Boite(
pos_X,
pos_Y - YD - (YD / 2),
pos_Z + (ZD / 1.32),
XD + ((XD / 5.705) * 2),
YD / 2,
ZD / 1.32,
)
Name("FCUEXTArriereM")
Union("FCUEXTDroiteM")
Clean(1)
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FCUEXTDroiteM")
Supprimer(1)
SelectObject("FCUEXTArriereM")
Union("FCUEXTGaucheM")
Clean(1)
SelectObjectContext("FCUEXTGaucheM")
Supprimer(1)angles avant
Boite(
pos_X + XD + ((XD / 5.705) * 2),
pos_Y
+ (YD / 2.72)
+ (YD / 10.41)
- (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2)
+ (
YD
+ (YD / 2.72)
+ (YD / 10.41)
- (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2)
),
pos_Z + (ZD / 1.32),
(XD / 5.705),
YD + (YD / 2.72) + (YD / 10.41) - (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2),
ZD,
)
Name("FCUEXTAvantDM")
Rotation(2, 0.785398)
Soustraction("FCUEXTArriereM", "FCUEXTAvantDM")GAuche
Boite(
pos_X - XD - ((XD / 5.705) * 2),
pos_Y
+ (YD / 2.72)
+ (YD / 10.41)
- (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2)
+ (
YD
+ (YD / 2.72)
+ (YD / 10.41)
- (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2)
),
pos_Z + (ZD / 1.32),
(XD / 5.705),
YD + (YD / 2.72) + (YD / 10.41) - (((YD / 4.03) * 2 + ((YD / 10.41) * 2)) / 2),
ZD,
)
Name("FCUEXTAvantGM")
Rotation(2, -0.785398)
Soustraction("FCUEXTArriereM", "FCUEXTAvantGM")
SelectObject("FCUTourMCE1")
Union("FCUEXTArriereM")
Clean(1)
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FCUEXTArriereM")
SelectObject("FCUEXTArriereM")
Supprimer(1)
SelectObjectContext("FCUTourMCE1")
SelectObject("FCUTourMCE1")
Name("Regelbau S414")METTTTTTRE SMOOTH SI ENVIEDE Smooth(1)
def FcuExtensionBasB(d):
Boite(pos_X, pos_Y - YD, pos_Z + (ZD / 1.32), XD + (XD / 2), YD, ZD / 1.32)
Name("Regelbau M157")
ChanfreinVariante(0.1)
Union("FCUTourMCE1")
Clean(1)
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("FCUTourMCE1")
SelectObject("FCUTourMCE1")
Supprimer(1)def FcuArriereMB(p24):
Boite(pos_X + XD, pos_Y - YD - 0.5, pos_Z + (ZD), XD, YD / 2, ZD * 2)
Name("FCUARRNegatif1")
Soustraction("FCUTourMA", "FCUARRNegatif1")oblique
Boite(pos_X + 1, pos_Y - YD - 0.5 - (YD / 3), pos_Z + (ZD), YD / 2, YD / 4, ZD * 2)
Name("FCUARRNegatif2")
bpy.context.object.rotation_euler[2] = -0.994838
Soustraction("FCUTourMA", "FCUARRNegatif2")def PortearriereMB(p26):
Boite(pos_X + (XD / 2), pos_Y - (YD / 2) - 1, pos_Z + (ZD) + (ZD / 2), 1, 2, 2)
Name("FCUPorteNegatif")
Soustraction("FCUTourMA", "FCUPorteNegatif")def EscalierTubeMB(p25):
Cylindre(
20,
2.3,
1.3,
ZD - (ZD / 5),
pos_X + XD,
pos_Y + (YD / 2) + (YD / 4),
pos_Z + ZD + (ZD / 5),
)
Name("FCUTubeMB")
Cylindre(
20,
2,
1,
ZD - (ZD / 5),
pos_X + XD,
pos_Y + (YD / 2) + (YD / 4),
pos_Z + ZD + (ZD / 5) + 1,
)
Name("FCUTubeNegatifMB")
Soustraction("FCUTubeMB", "FCUTubeNegatifMB")
SelectObject("FCUTourMA")
Clean(1)
Union("FCUTubeMB")
Clean(1)
SelectObject("FCUTubeMB")
SelectObjectContext("FCUTubeMB")
Supprimer(1)def FcuOrc(p27):
Boite(pos_X, pos_Y + YD + (YD / 4) - 1, pos_Z + (ZD), XD / 2, YD / 4 + 1, ZD)
Name("FCUOrc")
bpy.ops.object.modifier_add(type="BEVEL")
bpy.context.object.modifiers["Bevel"].width = 0.26
bpy.context.object.modifiers["Bevel"].segments = 6
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Bevel")Negatiforc
Boite(pos_X, pos_Y + YD + (YD / 4) - 1, pos_Z + (ZD * 2) - (ZD / 1.35), XD, YD, 1)
Name("FCUOrcNegatif1")Boite(pos_X, pos_Y+YD+(YD/4)-1, pos_Z+(ZD*2)-(ZD/1.35),XD/2,YD/4+1,1)
Soustraction("FCUOrc", "FCUOrcNegatif1")DentitionOrc
Boite(
pos_X,
pos_Y + YD + (YD / 4) - 1,
pos_Z + (ZD * 2) - (ZD / 1.35),
XD / 2 - ((XD / 2) / 4.5),
YD / 4 + 1 - ((XD / 2) / 4.5),
2,
)
Name("FCUOrcDents2")DentitionOrcNegatif2
Boite(pos_X, pos_Y + YD + (YD / 4) - 1, pos_Z + (ZD * 2) - (ZD / 1.35), XD, YD, 0.8)
Name("FCUOrcDents2Negatif")
Soustraction("FCUOrcDents2", "FCUOrcDents2Negatif")
SelectObject("FCUOrc")
Clean(1)
Union("FCUOrcDents2")
Clean(1)
SelectObject("FCUOrcDents2")
SelectObjectContext("FCUOrcDents2")
Supprimer(1)DentitionOrc3
Boite(
pos_X,
pos_Y + YD + (YD / 4) - 1,
pos_Z + (ZD * 2) - (ZD / 1.35),
XD / 2 - ((XD / 2) / 6),
YD / 4 + 1 - ((XD / 2) / 6),
2,
)
Name("FCUOrcDents3")DentitionOrcNegatif3
Boite(pos_X, pos_Y + YD + (YD / 4) - 1, pos_Z + (ZD * 2) - (ZD / 1.35), XD, YD, 0.9)
Name("FCUOrcDents3Negatif")
Soustraction("FCUOrcDents3", "FCUOrcDents3Negatif")
SelectObject("FCUOrc")
Clean(1)
Union("FCUOrcDents3")
Clean(1)
SelectObject("FCUOrcDents3")
SelectObjectContext("FCUOrcDents3")
Supprimer(1)Union et trou
SelectObject("FCUTourMA")
Name("RegelbauM162")
Clean(1)
Union("FCUOrc")
Clean(1)
SelectObject("FCUOrc")
SelectObjectContext("FCUOrc")
Supprimer(1)Derniertrou
Boite(
pos_X,
pos_Y + YD + (YD / 4) - 1,
pos_Z + (ZD * 2) - (ZD / 1.35),
XD / 2 - ((XD / 2) / 3),
YD / 4 + 1 - ((XD / 2) / 3),
2,
)
Name("FCUOrcDents1")
Soustraction("RegelbauM162", "FCUOrcDents1")Appel fonction pour test####################################################### FcuBaseM(1)
FcuMPoste(pos_X, pos_Y, pos_Z+(ZD2),+((ZD/2.125)2),+(ZD/8.5)+(ZD/77),XD,YD/2,ZD/2.125,XD*2,YD,ZD/2.125,ZD/8.5,XD-(XD/5),YD/3,(ZD/4)+(ZD/10),”FCUBASEM”,+(ZD/8.5)+(ZD/77),(XD-(XD/5))+(XD/54),YD/3+(YD/54),ZD/8,(XD-(XD/5))-(XD/54),YD/3+(YD/30),ZD/2) SelectObjectContext(“FcuPosteOuverture2”) SelectObject(“FcuPosteOuverture2”) Name(“FCUTourMA”)
FcuArriereMB(1) PortearriereMB(1) EscalierTubeMB(1)
FcuOrc(1)"""
#DIVIDER
#DIVIDER
def FcuWilly(kf):
#DIVIDER
Boite(pos_X, pos_Y + YD + 0.5, pos_Z + (ZD), XD * 2, YD / 2, ZD * 2)
Name("FCUWillyN")
Soustraction("FCUTourMB", "FCUWillyN")
#DIVIDER
Boite(pos_X, pos_Y + YD + 0.5, pos_Z + (ZD), XD, YD / 2, ZD)
Name("FCUWillyN")
#DIVIDER
Boite(pos_X + XD * 2, pos_Y + YD / 2 + 0.5, pos_Z + (ZD), XD, YD * 2, ZD * 2)
Name("FCUWillyN1")
Rotation(2, 0.2618)
Soustraction("FCUWillyN", "FCUWillyN1")
#DIVIDER
Boite(pos_X - XD * 2, pos_Y + YD / 2 + 0.5, pos_Z + (ZD), XD, YD * 2, ZD * 2)
Name("FCUWillyN2")
Rotation(2, -0.2618)
Soustraction("FCUWillyN", "FCUWillyN2")
#DIVIDER
SelectObjectContext("FCUWillyN")
SelectObject("FCUWillyN")
Dupliquer(0, 0, ZD * 2 - ((ZD * 2)) / 2)
Name("FCUWillyN3Haut")
Resize(2, 2, 1)
Soustraction("FCUWillyN", "FCUWillyN3Haut")
#DIVIDER
Boite(pos_X, pos_Y + YD + 0.5, pos_Z + (ZD) + (ZD / 2), XD, YD / 2, ZD - (ZD / 2))
Name("FCUWillyTete")
Boite(pos_X + XD * 2, pos_Y + YD / 2 + 0.5, pos_Z + (ZD), XD, YD * 2, ZD * 2)
Name("FCUWillyNH1")
Rotation(2, 0.401426)
Soustraction("FCUWillyTete", "FCUWillyNH1")
#DIVIDER
Boite(pos_X - XD * 2, pos_Y + YD / 2 + 0.5, pos_Z + (ZD), XD, YD * 2, ZD * 2)
Name("FCUWillyNH2")
Rotation(2, -0.401426)
Soustraction("FCUWillyTete", "FCUWillyNH2")
#DIVIDER
SelectObjectContext("FCUWillyTete")
SelectObject("FCUWillyTete")
bpy.ops.object.modifier_add(type="BEVEL")
bpy.context.object.modifiers["Bevel"].width = 0.26
bpy.context.object.modifiers["Bevel"].segments = 6
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Bevel")
Deplacer(0, -1, 0)
#DIVIDER
Boite(pos_X, pos_Y + YD + 0.5, pos_Z + (ZD), XD, YD, 2)
Name("FCUWillyOuvertureN")
Soustraction("FCUWillyTete", "FCUWillyOuvertureN")
SelectObject("FCUWillyTete")
Clean(1)
Union("FCUWillyN")
Clean(1)
SelectObject("FCUWillyN")
SelectObjectContext("FCUWillyN")
Resize(0.7, 1, 1)
Deplacer(0, -((YD / 2) / 1.5), 3)
Deplacer(0, 0, -2.7)
bpy.context.object.dimensions[2] = 1
Dupliquer(0, 0, -0.2)
Name("FCUWillyVide3N")
Dupliquer(0, 0, -0.2)
Name("FCUWillyOuvertureDent3N")
Resize(1.1, 1.2, 1)
Union("FCUWillyN")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("FCUWillyN")
SelectObjectContext("FCUWillyN")
Supprimer(1)
SelectObject("FCUWillyTete")
Union("FCUWillyOuvertureDent3N")
Clean(1)
SelectObject("FCUWillyOuvertureDent3N")
SelectObjectContext("FCUWillyOuvertureDent3N")
Supprimer(1)
if XD > 12:
SelectObject("FCUWillyTete")
SelectObjectContext("FCUWillyTete")
Resize(0.5, 1, 1)
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("FCUTourMB")
SelectObjectContext("FCUTourMB")
Union("FCUWillyTete")
Clean(1)
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("FCUWillyTete")
SelectObjectContext("FCUWillyTete")
Supprimer(1)
SelectObject("FCUWillyVide3N")
SelectObjectContext("FCUWillyVide3N")
Resize(0.5, 1, 1)
Resize(0.8, 1, (ZD))
Deplacer(0, -1, (ZD / 2))
Soustraction("FCUTourMB", "FCUWillyVide3N")
SelectObject("FCUTourMB")
Clean(1)
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.subdivide(
number_cuts=5,
smoothness=0,
quadtri=False,
quadcorner="STRAIGHT_CUT",
fractal=0,
fractal_along_normal=0,
seed=0,
)
bpy.ops.mesh.vertices_smooth(repeat=1, xaxis=True, yaxis=True, zaxis=True)
bpy.ops.object.editmode_toggle()
Name("RegelbauM362")
if XD <= 12:
SelectObject("FCUWillyTete")
SelectObjectContext("FCUWillyTete")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("FCUTourMB")
SelectObjectContext("FCUTourMB")
Union("FCUWillyTete")
Clean(1)
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("FCUWillyTete")
SelectObjectContext("FCUWillyTete")
Supprimer(1)
SelectObject("FCUWillyVide3N")
SelectObjectContext("FCUWillyVide3N")
Resize(0.8, 1, (ZD / 3))
Deplacer(0, -1, (ZD / 4))
Soustraction("FCUTourMB", "FCUWillyVide3N")
SelectObject("FCUTourMB")
Name("RegelbauM262")
#DIVIDER
#DIVIDER
#DIVIDER
#DIVIDER
def RegelbauS414(KZ):
FcuObliqueM(1)
FcuExtensionBas(1)
#DIVIDER
def RegelbauM157(kl):
FcuDroitM(1)
FcuExtensionBasB(1)
#DIVIDER
def RegelbauM162(ki):
FcuMPoste(
pos_X,
pos_Y,
pos_Z + (ZD * 2),
+((ZD / 2.125) * 2),
+(ZD / 8.5) + (ZD / 77),
XD,
YD / 2,
ZD / 2.125,
XD * 2,
YD,
ZD / 2.125,
ZD / 8.5,
XD - (XD / 5),
YD / 3,
(ZD / 4) + (ZD / 10),
"FCUBASEM",
+(ZD / 8.5) + (ZD / 77),
(XD - (XD / 5)) + (XD / 54),
YD / 3 + (YD / 54),
ZD / 8,
(XD - (XD / 5)) - (XD / 54),
YD / 3 + (YD / 30),
ZD / 2,
)
SelectObjectContext("FcuPosteOuverture2")
SelectObject("FcuPosteOuverture2")
Name("FCUTourMA")
#DIVIDER
FcuArriereMB(1)
PortearriereMB(1)
EscalierTubeMB(1)
FcuOrc(1)
#DIVIDER
def RegelbauM362262(hj):
FcuPosteMB(1)
FcuWilly(1)
#DIVIDER
#DIVIDER
#DIVIDER
#DIVIDER
def FcuTour(p9):
if ZD <= 20:
if XD < 10:
FcuPosteMC(1)
FcuExtensionM(1)
FcuExtensionDentM(1)
FcuExtensionDentM2(1)
if Doll2 <= 5:
RegelbauS414(1)
if Doll2 > 5:
RegelbauM157(1)
if XD > 10:
RegelbauM362262(1)
if XD == 10:
RegelbauM162(1)
if ZD > 20:
FcuPosteMD(1)
#DIVIDER
print(
"-----------------------------------------------DEFINITION OBSERVATOIRE MULTIPLE----------------------------------------------"
)
#DIVIDER
def AObservationsMultiples(hj):
FcuBaseM(1)
FcuTour(1)
#DIVIDER
print(
"-----------------------------------------------Construcution Volumetrique TOUR CIRCULAIRES----------------------------------------------"
)
#DIVIDER
def TourCirculaire(a):
Cylindre(d, XE, XE, ZE, pos_X, pos_Y, pos_Z + (ZE))
Chanfrein(1)
Name("Tour circulaire")
#DIVIDER
def FireControl(b):
Boite(1, XE, (ZE * 2) - (ZE / 2), XE, XE, 1)
if ZE >= 24:
Multiplication(ZE / 9, -ZE / 3)
Name("NegatifOuverture")
Soustraction("Tour circulaire", "NegatifOuverture")
#DIVIDER
def TourCirculaireVide(a):
Cylindre(
d,
XE / 2 + (XE / 4),
XE / 2 + (XE / 4),
ZE - (ZE / 11),
pos_X,
pos_Y,
pos_Z + (ZE),
)
Chanfrein(1)
Name("Vide")
Soustraction("Tour circulaire", "Vide")
#DIVIDER
#DIVIDER
def TourCirculaireB(a):
Cylindre(d, XE, XE, ZE, pos_X, pos_Y, pos_Z + (ZE))
Chanfrein(1)
Name("Tour circulaireB")
Boite(1, pos_Y, pos_Z, 2 * XE, XE * 2, ZE / 2 + (ZE / 4))
Name("NegatifOuvertureB")
Soustraction("Tour circulaireB", "NegatifOuvertureB")
#DIVIDER
def FireControlB(b):
Boite(1, XE, (ZE * 2) - (ZE / 2), XE, XE, 1)
if ZE >= 24:
Multiplication((ZE / 9) / 2, -ZE / 3)
Name("NegatifOuvertureB")
Soustraction("Tour circulaireB", "NegatifOuvertureB")
#DIVIDER
def TourCirculaireVideB(a):
Cylindre(
d, XE / 2 + (XE / 4), XE / 2 + (XE / 4), ZE / 4, pos_X, pos_Y, pos_Z + (ZE)
)
Chanfrein(1)
Name("VideB")
Soustraction("Tour circulaireB", "VideB")
#DIVIDER
def TourExtension(u):
Boite(pos_X, pos_Y, ZE - (ZE / 2), XE - 1, XE, (ZE / 9) + 5)
Deplacer(0, -XE, (ZE / 4) - 2)
Name("TourExtension")
#DIVIDER
def ExtensionDetail(z):
Boite(pos_X, -pos_Y, ZE - (ZE / 2), XE - 1, XE, (ZE / 9) + 8)
Deplacer(0, -XE, (ZE / 4) - 2)
Deplacer(XE + (XE / 4), -XE - (XE / 3), 0)
Name("ExtensionNegatif1")
Soustraction("TourExtension", "ExtensionNegatif1")
Boite(pos_X, -pos_Y, ZE - (ZE / 2), XE - 1, XE, (ZE / 9) + 8)
Deplacer(0, -XE - (XE / 2.5), (ZE / 4) - 2)
Deplacer(2 + (XE / 3), -XE - (XE / 3), 0)
Rotation(2, -0.680679)
Name("ExtensionNegatif2")
Soustraction("TourExtension", "ExtensionNegatif2")
Boite(pos_X, -pos_Y, ZE - (ZE / 2), XE - 1, XE, (ZE / 9) + 8)
Deplacer(0, -XE, (ZE / 4) - 2)
Deplacer(-XE - (XE / 2), -XE - (XE / 3), 0)
Rotation(2, 0.715585)
Name("ExtensionNegatif3")
Soustraction("TourExtension", "ExtensionNegatif3")
#DIVIDER
Boite(pos_X, -pos_Y, ZE + 1, XE - 4, XE - 1, (ZE / 9) + 8)
Deplacer(0, 0, (ZE / 4) - 1)
Deplacer(0, -(XE / 4), 0)
Name("Rebord")
Soustraction("TourExtension", "Rebord")
SelectObject("TourExtension")
Chanfrein(1)
#DIVIDER
def Porte(aa):
Boite(pos_X, -pos_Y, ZE - (ZE / 2), 1, 6, 2)
Deplacer((XE / 2) + 1, -XE - (XE / 3), (ZE / 4) - (ZE / 6))
Name("Porte")
Soustraction("TourExtension", "Porte")
Boite(pos_X, -pos_Y, ZE - (ZE / 2), 1, 0.1, 0.3)
Deplacer((XE / 2) + 1, -XE - (XE / 3), (ZE / 4) - (ZE / 6) + 2)
Name("Linteau")
Union("TourExtension")
Name("TourExtensionComplet")
#DIVIDER
def TourExtensionB(ra):
Boite(pos_X, pos_Y, pos_Z, XE - 1, XE, (ZE / 9) + 5)
Deplacer(0, -XE, (ZE / 4) - 2)
Name("TourExtensionB")
#DIVIDER
def ExtensionDetailB(z):
Boite(pos_X, -pos_Y, (ZE / 2), XE - 1, XE, (ZE / 9) + 8)
Deplacer(0, -XE, (ZE / 4) - 2)
Deplacer(XE + (XE / 4), -XE - (XE / 3), 0)
Name("ExtensionNegatif1B")
Soustraction("TourExtensionB", "ExtensionNegatif1B")
Boite(pos_X, -pos_Y, (ZE / 2), XE - 1, XE, (ZE / 9) + 8)
Deplacer(0, -XE - (XE / 2.5), (ZE / 4) - 2)
Deplacer(2 + (XE / 3), -XE - (XE / 3), 0)
Rotation(2, -0.680679)
Name("ExtensionNegatif2B")
Soustraction("TourExtensionB", "ExtensionNegatif2B")
Boite(pos_X, -pos_Y, (ZE / 2), XE - 1, XE, (ZE / 9) + 8)
Deplacer(0, -XE, (ZE / 4) - 2)
Deplacer(-XE - (XE / 2), -XE - (XE / 3), 0)
Rotation(2, 0.715585)
Name("ExtensionNegatif3B")
Soustraction("TourExtensionB", "ExtensionNegatif3B")
Boite(pos_X, -pos_Y, ZE + 1, XE - 4, XE - 1, (ZE / 9) + 8)
Deplacer(0, 0, (ZE / 4) - 1)
Deplacer(0, -(XE / 4), 0)
Name("RebordB")
Soustraction("TourExtensionB", "RebordB")
SelectObject("TourExtensionB")
Chanfrein(1)
#DIVIDER
#DIVIDER
def TourExtensionC(ra):
Boite(pos_X, pos_Y, pos_Z, XE - 1, XE, (ZE / 9) + 5)
Deplacer(0, -XE, (ZE / 4) - 2)
Name("TourExtensionC")
#DIVIDER
def ExtensionDetailC(z):
Boite(pos_X, -pos_Y, pos_Z, XE - 1, XE, (ZE / 9) + 8)
Deplacer(0, -XE, (ZE / 4) - 2)
Deplacer(XE + (XE / 4), -XE - (XE / 3), 0)
Name("ExtensionNegatif1C")
Soustraction("TourExtensionC", "ExtensionNegatif1C")
Boite(pos_X, -pos_Y, pos_Z, XE - 1, XE, (ZE / 9) + 8)
Deplacer(0, -XE - (XE / 2.5), (ZE / 4) - 2)
Deplacer(2 + (XE / 3), -XE - (XE / 3), 0)
Rotation(2, -0.680679)
Name("ExtensionNegatif2C")
Soustraction("TourExtensionC", "ExtensionNegatif2C")
Boite(pos_X, -pos_Y, pos_Z, XE - 1, XE, (ZE / 9) + 8)
Deplacer(0, -XE, (ZE / 4) - 2)
Deplacer(-XE - (XE / 2), -XE - (XE / 3), 0)
Rotation(2, 0.715585)
Name("ExtensionNegatif3C")
Soustraction("TourExtensionC", "ExtensionNegatif3C")
Boite(pos_X, -pos_Y, (ZE / 2) + 1, XE - 4, XE - 1, (ZE / 9) + 8)
Deplacer(0, 0, (ZE / 4) - 1)
Deplacer(0, -(XE / 4), 0)
Name("RebordC")
Soustraction("TourExtensionC", "RebordC")
SelectObject("TourExtensionC")
Chanfrein(1)
#DIVIDER
def PorteC(aa):
Boite(pos_X, -pos_Y, ZE - (ZE / 2), 1, 6, 2)
Deplacer((XE / 2) + 1, -XE - (XE / 3), (ZE / 4) - (ZE / 6))
Name("PorteC")
Soustraction("TourExtensionC", "PorteC")
Boite(pos_X, -pos_Y, ZE - (ZE / 2), 1, 0.1, 0.3)
Deplacer((XE / 2) + 1, -XE - (XE / 3), (ZE / 4) - (ZE / 6) + 2)
Name("LinteauC")
Union("TourExtensionC")
#DIVIDER
def TrouVue(aaa):
Boite(pos_X, -pos_Y, ZE - (ZE / 2), XE / 8, 0.1, 0.4)
Deplacer(XE / 6, -XE - (XE / 6), (ZE / 4) - (ZE / 6) + 0.5)
Deplacer(0, -(XE / 3), 0)
Name("Meurtriere1")
Boite(pos_X, -pos_Y, ZE - (ZE / 2), XE / 8, 0.7, 0.8)
Deplacer((XE / 6) + 1, -XE - (XE / 6), (ZE / 4) - (ZE / 6) + 0.5)
Deplacer(0, -(XE / 3), 0)
Name("Meurtriere2")
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "UNION"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects["Meurtriere1"]
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Boolean")
Name("Meurtriere2")
Boite(pos_X, -pos_Y, ZE - (ZE / 2), XE / 8, 1, 0.9)
Deplacer((XE / 6) + 1.5, -XE - (XE / 6), (ZE / 4) - (ZE / 6) + 0.5)
Deplacer(0, -(XE / 3), 0)
Name("Meurtriere3")
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "UNION"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects["Meurtriere2"]
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Boolean")
Name("Meurtriere")
Rotation(2, -0.680679)
Soustraction("TourExtension", "Meurtriere")
SelectObjectContext("Meurtriere2")
SelectObject("Meurtriere2")
Supprimer(1)
SelectObjectContext("Meurtriere1")
SelectObject("Meurtriere1")
Supprimer(1)
#DIVIDER
#DIVIDER
def GardeTour(ooo):
Cylindre(d, XE - 3, XE - 3, ZE / 19, pos_X, pos_Y, pos_Z + (ZE * 2) - 0.3)
Name("GardeTour")
Cylindre(d, XE - 4, XE - 4, 3, pos_X, pos_Y, pos_Z + (ZE * 2) - 0.3)
Name("NegatifGardeTour")
Soustraction("GardeTour", "NegatifGardeTour")
Boite(
pos_X,
pos_Y - (XE / 2) + 2,
pos_Z + (ZE) + 5,
(XE / 3) - 1,
(XE / 2),
ZE + (ZE / 38) - 2.7,
)
Name("NegatifTubeTour")
Soustraction("GardeTour", "NegatifTubeTour")
#DIVIDER
def TubeTour(lll):
Boite(
pos_X, pos_Y - (XE / 2), pos_Z + (ZE) + 3, XE / 3, XE / 2, ZE + (ZE / 38) - 2.7
)
Name("TubeTour")
Boite(
pos_X,
pos_Y - (XE / 2) + 2,
pos_Z + (ZE) + 5,
(XE / 3) - 1,
(XE / 2),
ZE + (ZE / 38) - 2.7,
)
Name("NegatifTubeTour")
Soustraction("TubeTour", "NegatifTubeTour")
Cylindre(d, XE - 4, XE - 4, 3, pos_X, pos_Y, pos_Z + (ZE * 2) - 0.3)
Name("NegatifGardeTour")
Soustraction("TubeTour", "NegatifGardeTour")
Boite(
pos_X,
pos_Y - (XE / 2) - (XE / 4) + 1,
pos_Z + (ZE) + 5,
(XE / 3) - 1 - (XE / 6),
(XE / 7),
ZE + (ZE / 38) - 2.7,
)
Name("TrouHautTour")
Soustraction("Tour circulaire", "TrouHautTour")
#DIVIDER
def GardeTourB(ooo):
Cylindre(d, XE - 3, XE - 3, ZE / 19, pos_X, pos_Y, pos_Z + (ZE * 2) - 1)
Name("GardeTourB")
Soustraction("Tour circulaire", "GardeTourB")
#DIVIDER
def ExtensionLong(ger):
Boite(pos_X, -pos_Y, pos_Z, XE + 3, XE / 3, (ZE / 5))
Deplacer(0, -XE, (ZE / 2) + (ZE / 6))
Deplacer(-XE - (XE / 2), -XE - (XE / 3), 0)
Rotation(2, 0.715585)
Name("ExtensionHautB")
Boite(pos_X, -pos_Y, pos_Z, XE + 9, (XE / 3) + (XE / 2), (ZE / 5))
Deplacer(0, -XE + (XE / 6), (ZE / 2) + (ZE / 6))
Deplacer(-XE - XE, -XE - (XE / 3), -(ZE / 5))
Rotation(2, 0.715585)
Rotation(1, 0.279253)
Name("NegatifExtensionHautB")
Soustraction("ExtensionHautB", "NegatifExtensionHautB")
SelectObject("ExtensionHautB")
Chanfrein(1)
#DIVIDER
def ExtensionBasse(zz):
TourExtension(1)
ExtensionDetail(1)
TrouVue(1)
Porte(1)
#DIVIDER
def ExtensionBasseB(zz):
TourExtension(1)
ExtensionDetail(1)
TrouVue(1)
ExtensionLong(1)
Porte(1)
#DIVIDER
#DIVIDER
#DIVIDER
def GardeCorpsHaut(uuu):
GardeTour(1)
TubeTour(1)
#DIVIDER
def ExtensionSol(sze):
TourExtensionB(1)
ExtensionDetailB(1)
#DIVIDER
def ExtensionRaz(zse):
TourExtensionC(1)
ExtensionDetailC(1)
PorteC(1)
#DIVIDER
def GardeCorpsBas(mpo):
GardeTourB(1)
#DIVIDER
def PosteObservationAlpha(ert):
TourCirculaire(1)
FireControl(1)
TourCirculaireVide(1)
#DIVIDER
def PosteObservationBeta(hyj):
TourCirculaireB(1)
FireControlB(1)
TourCirculaireVideB(1)
#DIVIDER
#DIVIDER
def ExtensionAvant(zio):
Boite(pos_X, pos_Y + XE, pos_Z, XE, 2 * XE + za, (ZE / 9) + 5)
#DIVIDER
Name("ExtensionAvant")
Boite(
pos_X + XE,
pos_Y + XE + (2 * XE + za) - (XE / 2),
pos_Z,
(XE / 2) - 1,
((2 * XE + za) / 2),
(ZE / 9) + 15,
)
Name("NegatifExtensionAvant")
Soustraction("ExtensionAvant", "NegatifExtensionAvant")
SelectObject("ExtensionAvant")
bpy.context.scene.objects["ExtensionAvant"].select = True
Chanfrein(1)
#DIVIDER
def PosteObservationBas(a):
ExtensionAvant(1)
PosteObservationBeta(1)
SelectObject("Tour circulaireB")
Name("PosteObservationBas")
SelectObject("PosteObservationBas")
bpy.context.scene.objects["PosteObservationBas"].select = True
Deplacer(
0, pos_Y + XE + (2 * XE + za), -ZE - pos_Z - (ZE / 2) - (((ZE / 9) + 5) / 2)
)
#DIVIDER
#DIVIDER
def PosteObservationHautEtBas(bez):
#DIVIDER
PosteObservationBas(1)
Joindre(1)
Name("PosteObservationHautEtBAS")
#DIVIDER
print(
"-----------------------------------------------Bunker Type Poste d observation-----------------------------------------------"
)
#DIVIDER
def PosteObservationHaut(a):
PosteObservationAlpha(1)
print("ALors alors ZE vaut")
print(ZE)
if ZE <= 35:
GardeCorpsBas(1)
else:
GardeCorpsHaut(1)
print("ALors alors ZE/9 vaut")
print(ZE / 9)
print("Les dés nous donnent pour les extensions")
print(Haz)
if ZE / 9 >= 3:
if Haz > 3:
ExtensionBasse(1)
Joindre(1)
if Haz < 3:
ExtensionRaz(1)
Joindre(1)
if Haz == 3:
ExtensionBasse(1)
ExtensionSol(1)
Joindre(1)
if Doll >= 4:
ExtensionBasseB(1)
Joindre(1)
if Terra >= 8:
PosteObservationHautEtBas(1)
Joindre(1)
if WallWest >= 10:
bpy.ops.object.modifier_add(type="ARRAY")
bpy.context.object.modifiers["Array"].count = DDay
bpy.context.object.modifiers["Array"].relative_offset_displace[0] = 0
bpy.context.object.modifiers["Array"].relative_offset_displace[1] = 0.6
bpy.context.object.modifiers["Array"].relative_offset_displace[2] = -0.9
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Array")
Name("PosteObservationHaut")
#DIVIDER
print(
"-----------------------------------------------Construcution Volumetrique Tour S 448----------------------------------------------"
)
#DIVIDER
def TourPalier(a):
Boite(pos_X, pos_Y, pos_Z + (Z), X, Y, Z)
ChanfreinVariante(0.1)
Name("Tour Palier")
print(X, Y, Z)
Boite(pos_X, pos_Y, (pos_Z + (Z)) - (Z / 3), X + 4, Y + 4, Z - (Z / 3))
ChanfreinVariante(0.3)
Name("Tour PalierBas")
Union("Tour Palier")
Name("Tour PalierBas")
#DIVIDER
Boite(pos_X, pos_Y, pos_Z, X + 10, Y + 10, Z / 4)
ChanfreinVariante(0.5)
Name("Tour PalierSocle")
Union("Tour PalierBas")
Name("Tour PalierOk")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("Tour PalierBas")
SelectObject("Tour PalierBas")
Supprimer(1)
SelectObjectContext("Tour Palier")
SelectObject("Tour Palier")
Supprimer(1)
#DIVIDER
def DetailToit1(a1):
Boite(pos_X, pos_Y, (Z * 2) + 1, X * 2, Y * 2, 4)
Name("Detail ToitNegatif")
Soustraction("Tour PalierOk", "Detail ToitNegatif")
if X >= Y:
Boite(pos_X - (X - (X / 2)), pos_Y, (Z * 2) - 9, X, Y - 1, 4)
ChanfreinVariante(0.5)
Name("Detail ToitNegatif3")
Union("Tour PalierOk")
Name("Tour PalierOkOk")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("Tour PalierOk")
SelectObject("Tour PalierOk")
Supprimer(1)
Boite(pos_X - (X + X / 2), pos_Y, (Z * 2) - 2, X, Y * 2, 4)
Name("Detail ToitNegatif2")
else:
Boite(pos_X, pos_Y - (X - (X / 2)), (Z * 2) - 9, X - 1, Y, 4)
ChanfreinVariante(0.5)
Name("Detail ToitNegatif3")
Union("Tour PalierOk")
Name("Tour PalierOkOk")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("Tour PalierOk")
SelectObject("Tour PalierOk")
Supprimer(1)
Boite(pos_X, pos_Y - (Y + Y / 2), (Z * 2) - 2, X * 2, Y, 4)
Name("Detail ToitNegatif2")
Soustraction("Tour PalierOkOk", "Detail ToitNegatif2")
#DIVIDER
def DetailTrouToit(a2):
if X >= Y:
Cylindre(32, X / 2, X / 2, 0.5, pos_X + 1, pos_Y, (Z * 2) - 3)
#DIVIDER
Name("Detail TrouToitNegatif")
Union("Tour PalierOkOk")
Name("Tour PalierOkOkOk")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("Tour PalierOkOk")
SelectObject("Tour PalierOkOk")
Supprimer(1)
Cylindre(32, 1, 1, Z / 2, pos_X + 1, pos_Y, (Z * 2) - 3)
Name("TrouToitNegatif")
else:
Cylindre(32, Y / 2, Y / 2, 0.5, pos_X, pos_Y + 1, (Z * 2) - 3)
#DIVIDER
Name("Detail TrouToitNegatif")
Union("Tour PalierOkOk")
Name("Tour PalierOkOkOk")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("Tour PalierOkOk")
SelectObject("Tour PalierOkOk")
Supprimer(1)
Cylindre(32, 1, 1, Z / 2, pos_X, pos_Y + 1, (Z * 2) - 3)
Name("TrouToitNegatif")
Soustraction("Tour PalierOkOkOk", "TrouToitNegatif")
#DIVIDER
def DetailTrouToit2(a3):
if X >= Y:
Cylindre(32, (X / 3) + 1, X / 3, 2, pos_X - (X / 2), pos_Y, (Z * 2) - 6)
Name("Trou")
#DIVIDER
else:
Cylindre(32, Y / 3, (Y / 3) + 1, 2, pos_X, pos_Y - (Y / 2), (Z * 2) - 6)
Name("Trou")
Soustraction("Tour PalierOkOkOk", "Trou")
#DIVIDER
def TourS448(n1):
TourPalier(1)
DetailToit1(1)
DetailTrouToit(1)
DetailTrouToit2(1)
SelectObject("Tour PalierOkOkOk")
Name("Tour S448")
#DIVIDER
print(
"-----------------------------------------------Construcution Volumetrique Tour FL354----------------------------------------------"
)
#DIVIDER
def TourRectangle(m1):
Boite(pos_X, pos_Y, pos_Z + (Z), X, Y, Z)
ChanfreinVariante(0.1)
Name("Tour Rectangle")
#DIVIDER
def TourRectangleIndus(m2):
#DIVIDER
Boite(pos_X, pos_Y + (Y * 2) - 1, pos_Z + (Z) - (Z / 3), X - 2, Y, Z - (Z / 3))
Name("EvidementY/2")
Boite(pos_X, pos_Y - 0.2, pos_Z + (Z) - (Z / 3), X + 2, Y, 1)
Name("LinteauY/2")
Soustraction("EvidementY/2", "LinteauY/2")
Soustraction("Tour Rectangle", "EvidementY/2")
SelectObjectContext("EvidementY/2")
Supprimer(1)
#DIVIDER
Boite(pos_X, pos_Y - (Y * 2) + 1, pos_Z + (Z) - (Z / 3), X - 2, Y, Z - (Z / 3))
Name("Evidement-Y/2")
Boite(pos_X, pos_Y + 0.2, pos_Z + (Z) - (Z / 3), X + 2, Y, 1)
Name("Linteau-Y/2")
Soustraction("Evidement-Y/2", "Linteau-Y/2")
Soustraction("Tour Rectangle", "Evidement-Y/2")
SelectObjectContext("Evidement-Y/2")
Supprimer(1)
#DIVIDER
Boite(pos_X + (X * 2) - 1, pos_Y, pos_Z + (Z) - (Z / 3), X, Y - 2, Z - (Z / 3))
Name("Evidement-X/2")
Boite(pos_X - 0.2, pos_Y, pos_Z + (Z) - (Z / 3), X, Y + 2, 1)
Name("Linteau-X/2")
Soustraction("Evidement-X/2", "Linteau-X/2")
Soustraction("Tour Rectangle", "Evidement-X/2")
SelectObjectContext("Evidement-X/2")
Supprimer(1)
#DIVIDER
Boite(pos_X - (X * 2) + 1, pos_Y, pos_Z + (Z) - (Z / 3), X, Y - 2, Z - (Z / 3))
Name("EvidementX/2")
Boite(pos_X + 0.2, pos_Y, pos_Z + (Z) - (Z / 3), X, Y + 2, 1)
Name("LinteauX/2")
Soustraction("EvidementX/2", "LinteauX/2")
Soustraction("Tour Rectangle", "EvidementX/2")
SelectObjectContext("EvidementX/2")
Supprimer(1)
#DIVIDER
def Escaliers(loc5, loc6, loc7, cm):
Boite(loc5, loc6, loc7, 3, 1, 0.2)
bpy.ops.object.modifier_add(type="ARRAY")
bpy.context.object.modifiers["Array"].use_constant_offset = True
bpy.context.object.modifiers["Array"].use_relative_offset = False
bpy.context.object.modifiers["Array"].constant_offset_displace[0] = 0.2
bpy.context.object.modifiers["Array"].constant_offset_displace[2] = 1.5
bpy.context.object.modifiers["Array"].count = cm
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Array")
Name("Escaliers")
#DIVIDER
def DetailPorteTour(m4):
if Y >= X:
Boite(pos_X - X + 0.3, pos_Y - (Y / 3), pos_Z + 3, 3, 1, 2)
Name("PorteTourY")
Soustraction("Tour Rectangle", "PorteTourY")
Escaliers(pos_X - X + 2, pos_Y - (Y / 3), pos_Z + 0.2, 4)
Union("Tour Rectangle")
Name("PorteTourY")
Name("TourFL354")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("Tour Rectangle")
Supprimer(1)
Boite(pos_X + X - 0.3, pos_Y - (Y / 3), pos_Z + (Z) - (Z / 3) - 2, 3, 0.6, 0.6)
Name("Ouverture1")
Soustraction("TourFL354", "Ouverture1")
Boite(pos_X + X - 0.3, pos_Y - (Y / 3), pos_Z + (Z) + (Z / 3) - 2, 3, 0.6, 0.6)
Name("Ouverture2")
Soustraction("TourFL354", "Ouverture2")
else:
Boite(pos_X - (X / 3), pos_Y - Y + 0.3, pos_Z + 3, 1, 3, 2)
Name("PorteTourX")
Soustraction("Tour Rectangle", "PorteTourX")
Escaliers(pos_X - (X / 3), pos_Y - Y + 2, pos_Z + 0.2, 4)
bpy.context.object.rotation_euler[2] = 1.5708
Union("Tour Rectangle")
Name("PorteTourX")
Name("TourFL354")
bpy.ops.object.select_all(action="TOGGLE")
SelectObjectContext("Tour Rectangle")
Supprimer(1)
Boite(pos_X - (X / 3), pos_Y + (Y / 3), pos_Z + (Z) - (Z / 3) - 2, 0.6, 3, 0.6)
Name("Ouverture1")
Boite(pos_X - (X / 3), pos_Y - Y + 0.3, pos_Z + 3, 1, 3, 2)
Soustraction("TourFL354", "Ouverture1")
Boite(pos_X - (X / 3), pos_Y + (Y / 3), pos_Z + (Z) + (Z / 3) - 2, 0.6, 3, 0.6)
Name("Ouverture2")
Soustraction("TourFL354", "Ouverture2")
SelectObjectContext("Ouverture1")
Supprimer(1)
#DIVIDER
def CreuxTour(m7):
Boite(pos_X, pos_Y, pos_Z + (Z) - (Z / 2), X - 3, Y - 3, Z - (Z / 3))
Name("Tour Rectangle Vide")
Soustraction("TourFL354", "Tour Rectangle Vide")
#DIVIDER
#DIVIDER
def TourFL354(m3):
TourRectangle(1)
TourRectangleIndus(1)
DetailPorteTour(1)
CreuxTour(1)
#DIVIDER
print(
"-----------------------------------------------Construcution Volumetrique Tour FL354----------------------------------------------"
)
#DIVIDER
def TourDogon(m8):
Boite(pos_X, pos_Y, pos_Z + (Z), X, Y, Z)
#DIVIDER
Name("Tour Dogon")
Boite(pos_X + X + 1, pos_Y, (Z * 2) + 1, X, Y * 2, Z / 3)
Name("Detail ToitNegatif42")
Soustraction("Tour Dogon", "Detail ToitNegatif42")
Boite(pos_X, pos_Y, (Z * 2) - 1, X * 2, Y * 2, 0.6)
Name("Detail ToitNegatif423")
Soustraction("Tour Dogon", "Detail ToitNegatif423")
SelectObject("Tour Dogon")
ChanfreinVariante(0.2)
Boite(pos_X - (X / 2) + 0.5, pos_Y, pos_Z + (Z), X / 3, Y - 1, Z)
Name("Appuis")
Boite(pos_X - (X / 2) + 0.5, pos_Y, pos_Z + (Z), X / 3 - 0.3, Y - 1.3, Z * 2)
Name("AppuisVide")
Soustraction("Appuis", "AppuisVide")
Boite(pos_X - (X / 2) + 0.5, pos_Y, pos_Z + (Z), X / 3 - 0.3, Y * 2, Z * 2)
Name("AppuisVideColonne")
Soustraction("Appuis", "AppuisVideColonne")
Boite(pos_X - (X / 2) + 0.5, pos_Y, pos_Z + (Z), X, Y - 1.3, Z * 2)
Name("AppuisVideColonne2")
Soustraction("Appuis", "AppuisVideColonne2")
#DIVIDER
Boite(pos_X - (X / 2) + 0.5, pos_Y, pos_Z + (Z) - 2, X / 3 - 1, Y - 2, Z)
Name("Vide")
Soustraction("Tour Dogon", "Vide")
#DIVIDER
def OuvertureDents(m21, m22, m23, m24):
#DIVIDER
Boite(pos_X + X - 1 + m21, pos_Y, Z * 2 - (Z / 3) - 3, 0.82, 3.5, m24)
Name("Detail ouverture1")
#DIVIDER
Boite(pos_X + X - 1 + m22, pos_Y, Z * 2 - (Z / 3) - 3, 0.82, 3.4, m24 - 0.1)
Name("Detail ouverture2")
Union("Detail ouverture1")
Name("Detail ouverture3")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("Detail ouverture1")
SelectObjectContext("Detail ouverture1")
Supprimer(1)
#DIVIDER
Boite(pos_X + X - 1 + m23, pos_Y, Z * 2 - (Z / 3) - 3, 0.82, 3.3, m24 - 0.2)
Name("Detail ouverture4")
Union("Detail ouverture3")
Name("Detail ouverture5")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("Detail ouverture3")
SelectObjectContext("Detail ouverture3")
Supprimer(1)
Soustraction("Tour Dogon", "Detail ouverture5")
SelectObject("Detail ouverture5")
SelectObjectContext("Detail ouverture5")
Supprimer(1)
#DIVIDER
def OuvertureDents2(m27):
Boite(-(pos_X + X - 1 + 0.41), pos_Y, Z * 2 - (Z / 3) - 3, 0.82, 1, 0.68)
#DIVIDER
Name("Detail ouverture1")
Boite(-(pos_X + X - 1 - 0.41), pos_Y, Z * 2 - (Z / 3) - 3, 0.82, 0.9, 0.6)
#DIVIDER
Name("Detail ouverture2")
Union("Detail ouverture1")
Name("Detail ouverture3")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("Detail ouverture1")
SelectObjectContext("Detail ouverture1")
Supprimer(1)
#DIVIDER
Boite(-(pos_X + X - 1 - 1.23), pos_Y, Z * 2 - (Z / 3) - 3, 0.82, 0.8, 0.5)
#DIVIDER
Name("Detail ouverture4")
Union("Detail ouverture3")
Name("Detail ouverture5")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("Detail ouverture3")
SelectObjectContext("Detail ouverture3")
Supprimer(1)
Soustraction("Tour Dogon", "Detail ouverture5")
SelectObject("Detail ouverture5")
SelectObjectContext("Detail ouverture5")
Supprimer(1)
#DIVIDER
def Poutre(m9):
Boite(pos_X, pos_Y, pos_Z + (Z / 2), 0.17, Y * 2, 0.22)
Name("Poutre")
Boite(pos_X + 0.19, pos_Y, pos_Z + (Z / 2), 0.17, Y * 2, 0.12)
Name("Poutre-X")
Soustraction("Poutre", "Poutre-X")
Boite(pos_X - 0.19, pos_Y, pos_Z + (Z / 2), 0.17, Y * 2, 0.12)
Name("PoutreX")
Soustraction("Poutre", "PoutreX")
SelectObject("Poutre")
SelectObjectContext("Poutre")
Dupliquer(-X + 1, 0, Z + (Z / 4))
Name("Poutre12")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("Poutre12")
SelectObjectContext("Poutre12")
bpy.ops.object.modifier_add(type="ARRAY")
bpy.context.object.modifiers["Array"].count = 3
bpy.context.object.modifiers["Array"].use_relative_offset = False
bpy.context.object.modifiers["Array"].use_constant_offset = True
bpy.context.object.modifiers["Array"].constant_offset_displace[0] = X * 2
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Array")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("Poutre")
SelectObjectContext("Poutre")
bpy.ops.object.modifier_add(type="ARRAY")
bpy.context.object.modifiers["Array"].count = 3
bpy.context.object.modifiers["Array"].use_relative_offset = False
bpy.context.object.modifiers["Array"].use_constant_offset = True
bpy.context.object.modifiers["Array"].constant_offset_displace[2] = Z * 2
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Array")
Dupliquer(X / 2 + (X / 4), 0, 0)
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("Poutre")
SelectObjectContext("Poutre")
Dupliquer(-X / 2 - (X / 4), 0, 0)
#DIVIDER
#DIVIDER
#DIVIDER
def TourS487(m41):
TourDogon(1)
OuvertureDents(0.41, -0.41, -1.23, 0.68)
OuvertureDents2(1)
Poutre(1)
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.join()
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.remove_doubles(threshold=0.0001, use_unselected=False)
bpy.ops.object.editmode_toggle()
Name("TourS487")
#DIVIDER
print(
"-----------------------------------------------Construcution Volumetrique Tour FL241----------------------------------------------"
)
#DIVIDER
def TourBatman(m41):
Boite(pos_X, pos_Y, pos_Z + (Z), X, Y, Z)
#DIVIDER
Name("Tour Batman")
#DIVIDER
def DentsY(m42):
#DIVIDER
Boite(
pos_X + X + (X / 2) - 1,
pos_Y - Y + (Y / 5) + (Y / 16),
pos_Z + (Z * 2) - (Z / 10),
X / 2,
Y / 8,
Z / 10 - (0.5),
)
Name("DentsBase")
bpy.ops.object.modifier_add(type="ARRAY")
bpy.context.object.modifiers["Array"].fit_type = "FIT_LENGTH"
bpy.context.object.modifiers["Array"].fit_length = Y * 2
bpy.context.object.modifiers["Array"].relative_offset_displace[0] = 0
bpy.context.object.modifiers["Array"].relative_offset_displace[1] = 2
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Array")
#DIVIDER
Boite(
pos_X + X + (X / 2) - 1,
pos_Y - Y + (Y / 5) + (Y / 16),
pos_Z + (Z * 2) + (Z / 10) + 1,
X * 2,
Y * 2,
1 + Z / 10 - (0.5),
)
Name("DentsBaseNegatif")
Rotation(1, 0.785398)
Soustraction("DentsBase", "DentsBaseNegatif")
SelectObject("DentsBase")
SelectObjectContext("DentsBase")
Dupliquer(-X * 2 - (X / 2) - 0.5, 0, 0)
bpy.context.object.scale[0] = -X / 2
Name("DentsBase-Y")
Union("DentsBase")
Name("DentsBaseY-Y")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("DentsBase")
SelectObjectContext("DentsBase")
Supprimer(1)
#DIVIDER
#DIVIDER
def DentsX(m42):
#DIVIDER
Boite(
pos_X - X + (X / 5) + (X / 16),
pos_Y + Y + (Y / 2) - 1,
pos_Z + (Z * 2) - (Z / 10),
X / 8,
Y / 2,
Z / 10,
)
Name("DentsBaseX")
bpy.ops.object.modifier_add(type="ARRAY")
bpy.context.object.modifiers["Array"].fit_type = "FIT_LENGTH"
bpy.context.object.modifiers["Array"].fit_length = X * 2
bpy.context.object.modifiers["Array"].relative_offset_displace[0] = 2
bpy.context.object.modifiers["Array"].relative_offset_displace[1] = 0
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Array")
#DIVIDER
Boite(
0, pos_Y + Y + Y / 4, pos_Z + (Z * 2) + (Z / 10) + 1, X * 2, Y * 2, 1 + Z / 10
)
Name("DentsBaseNegatifX")
Deplacer(0, 0, 0)
Rotation(0, -0.785398)
Soustraction("DentsBaseX", "DentsBaseNegatifX")
SelectObject("DentsBaseX")
SelectObjectContext("DentsBaseX")
Dupliquer(0, -Y * 2 - (Y / 2) - 0.5, 0)
bpy.context.object.scale[1] = -Y / 2
Name("DentsBase-X")
#DIVIDER
def DentUnion(m80):
Union("Tour Batman")
Name("Tour BatmanOk")
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("Tour Batman")
SelectObjectContext("Tour Batman")
Supprimer(1)
SelectObject("DentsBaseX")
SelectObjectContext("DentsBaseX")
Union("Tour BatmanOk")
#DIVIDER
def Finition1(m78):
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.join()
Name("TourDent")
#DIVIDER
def Finition2(m79):
Boite(pos_X, pos_Y, pos_Z + (Z * 2), X - 1, Y - 1, 3)
Name("FinitionNegatifX")
#DIVIDER
#DIVIDER
def EscaliersBatman(m28):
#DIVIDER
Boite(pos_X + (X / 2), pos_Y - Y, pos_Z + (Z * 2) - (Z / 3), 0.6, 0.6, Z / 3)
Name("EscalierBatman")
Boite(pos_X + (X / 2), pos_Y - Y, pos_Z + (Z * 2) - (Z / 3), 0.5, 0.5, Z)
Name("EscalierBatmanVide")
Soustraction("EscalierBatman", "EscalierBatmanVide")
#DIVIDER
Boite(pos_X + (X / 2), pos_Y - Y, pos_Z + (Z * 2) - 0.5, 1, 1, 0.4)
Name("EscalierBatmanNegatif")
Multiplication(50, -2.4)
Soustraction("EscalierBatman", "EscalierBatmanNegatif")
#DIVIDER
def UnionTotal(m57):
SelectObject("TourDent")
SelectObjectContext("TourDent")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.join()
Name("Tour FL241")
#DIVIDER
#DIVIDER
def TourFL241(m30):
TourBatman(1)
DentsY(1)
DentsX(1)
Finition1(1)
EscaliersBatman(1)
UnionTotal(1)
#DIVIDER
print(
"-----------------------------------------------Construcution Volumetrique Tour S21----------------------------------------------"
)
#DIVIDER
def TourSilo(s1):
Cylindre(40, X, X, Z, pos_X, pos_Y, pos_Z + (Z))
Name("Tour Silo")
Cylindre(40, X / 8, X / 8, Z * 2, pos_X, pos_Y, pos_Z + (Z))
Name("Tour SiloVide")
Soustraction("Tour Silo", "Tour SiloVide")
Boite(pos_X, pos_Y + X, pos_Z + (Z * 2), X * 2, X - (X / 3), 2)
Rotation(2, 0.191986)
Name("Tour Silo Negatif")
Soustraction("Tour Silo", "Tour Silo Negatif")
Boite(pos_X, pos_Y + X, pos_Z + (Z * 2), X * 2, X - (X / 3), 2)
Rotation(2, -0.191986)
Name("Tour Silo Negatif2")
Soustraction("Tour Silo", "Tour Silo Negatif2")
Cylindre(40, X / 3.2, X / 3.2, 4, pos_X, pos_Y + X / 2, pos_Z + (Z * 2))
Name("Tour SiloVide2")
Soustraction("Tour Silo", "Tour SiloVide2")
#DIVIDER
def OuvertureSiloY(s2):
Boite(pos_X, pos_Y - X, pos_Z + (Z * 2) - 1.5, 0.8, 1, 1)
Name("Ouvertures Y")
Multiplication(50, -5)
Soustraction("Tour Silo", "Ouvertures Y")
Boite(pos_X, pos_Y + X, pos_Z + (Z * 2) - 6, 0.8, 1, 1)
Name("Ouvertures X")
Multiplication(50, -5)
Soustraction("Tour Silo", "Ouvertures X")
Boite(pos_X + X, pos_Y, pos_Z + (Z * 2) - 6, 0.8, 1, 1)
Name("Ouvertures YX")
Multiplication(50, -5)
Soustraction("Tour Silo", "Ouvertures YX")
Boite(pos_X - X, pos_Y, pos_Z + (Z * 2) - 6, 0.8, 1, 1)
Name("Ouvertures XY")
Multiplication(50, -5)
Soustraction("Tour Silo", "Ouvertures XY")
#DIVIDER
def TourS21(s58):
TourSilo(1)
OuvertureSiloY(1)
print(
"-----------------------------------------------Construcution Volumetrique Base 1----------------------------------------------"
)
#DIVIDER
def BaseTour(l4):
Boite(pos_X, pos_Y, pos_Z - (ZB), XB, YB, ZB)
Name("Base1")
ChanfreinVariante(0.1)
#DIVIDER
def Cheminee(l5):
Cylindre(40, 2, 2, ZB / DDay, pos_X - XB, pos_Y + X / 2, pos_Z - ZB / 2)
Name("Cheminee")
Cylindre(40, 2 - 0.12, 2 - 0.12, ZB, pos_X - XB, pos_Y + X / 2, pos_Z - ZB / 2)
Name("ChemineeVide")
Soustraction("Cheminee", "ChemineeVide")
#DIVIDER
def UnionTotal(m57):
SelectObject("Base1")
SelectObjectContext("Base1")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.join()
Name("Basok")
#DIVIDER
def Base1(ter1):
BaseTour(1)
Cheminee(1)
UnionTotal(1)
if Doll >= 5:
Deplacer(XB / 2, YB / 3, 0)
print(
"-----------------------------------------------Fonctions des Tours fire Control Haut E---------------------------------------------"
)
#DIVIDER
def TourEtBaseE(l1):
if X >= 7 and Y > 7:
TourS448(1)
if X <= 7 and Y <= 7:
TourFL354(1)
if X == 7 and Y == 7:
TourS487(1)
if X < 7 and Y > 7:
TourFL241(1)
if X > 7 and Y < 7:
TourS21(1)
#DIVIDER
print(
"-----------------------------------------------Appel des Tour B et E----------------------------------------------"
)
#DIVIDER
#DIVIDER
def Assemble(ref):
Base1(1)
TourEtBaseE(1)
#DIVIDER
bpy.ops.object.select_all(action="TOGGLE")
SelectObject("Basok")
SelectObjectContext("Basok")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.join()
Name("Volcan")
print(X, Y, Z)
#DIVIDER
print(
"-----------------------------------------------Construcution Volumetrique----------------------------------------------"
)
#DIVIDER
def PosteCliniqueA(a):
Boite(pos_X, pos_Y, Z / 3, X, Y, Z)
Chanfrein(1)
Name("PCBA")
#DIVIDER
def Portes2A(a):
#DIVIDER
Boite(-X + 1.5, Y / 2, (Z / 2) + (Z / 5), 1, 1, 2)
Name("Porte")
Soustraction("PCBA", "Porte")
Boite(-X + 1.5, -Y / 2, (Z / 2) + (Z / 5), 1, 1, 2)
Name("Porte")
Soustraction("PCBA", "Porte")
#DIVIDER
def Portes3A(a):
#DIVIDER
Boite(-X + 1.5, 0, (Z / 2) + (Z / 4), 1, 1, 2)
Name("Porte")
Soustraction("PCBA", "Porte")
#DIVIDER
Boite(-X + 1.5, (Y / 2) + (Y / 4), (Z / 2) + (Z / 4), 1, 1, 2)
Name("Porte")
Soustraction("PCBA", "Porte")
#DIVIDER
Boite(-X + 1.5, -(Y / 2) - (Y / 4), (Z / 2) + (Z / 4), 1, 1, 2)
Name("Porte")
Soustraction("PCBA", "Porte")
#DIVIDER
def AnnexeA(a):
#DIVIDER
Boite(-X - 1.5, -Y + (Y / 3), Z / 3, 3, Y / 3, Z)
Chanfrein(1)
Name("AnnexeA")
Boite(-X + 0.5, -Y + (Y / 2), (Z / 2) + (Z / 4), 1, Y / 4, 2)
Name("PorteA")
Soustraction("AnnexeA", "PorteA")
#DIVIDER
def AnnexeB(a):
#DIVIDER
Boite(-X - 1.5, -(-Y + (Y / 3)), Z / 3, 3, Y / 3, Z)
Chanfrein(1)
Name("AnnexeA")
Boite(-X + 0.5, -(-Y + (Y / 2)), (Z / 2) + (Z / 4), 1, Y / 4, 2)
Name("PorteA")
Soustraction("AnnexeA", "PorteA")
#DIVIDER
def BlocA(a):
#DIVIDER
Boite(-X / 2 + 1, -Y - 1, Z / 3, X / 2, Y / 4, Z)
Name("AA")
Dupliquer(X, 0, 0)
Resize(1, 3, 1)
#DIVIDER
Rotation(2, E)
Name("NantiAA")
Soustraction("AA", "NantiAA")
#DIVIDER
SelectObject("AA")
#DIVIDER
Chanfrein(1)
Union("PCBA")
Joindre(1)
Name("PCBA")
#DIVIDER
Boite(-X / 2 + 1, Y + 1, Z / 3, X / 2, Y / 4, Z)
Name("AB")
Dupliquer(X, 0, 0)
bpy.ops.transform.resize(
value=(-1, -3, 1),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
Rotation(2, -U)
Name("NantiAB")
Soustraction("AB", "NantiAB")
SelectObject("AB")
Chanfrein(1)
Union("PCBA")
Joindre(1)
Name("PCBA")
#DIVIDER
def MortierA(a):
#DIVIDER
bpy.ops.mesh.primitive_cylinder_add(
vertices=32,
radius=2,
depth=Z,
end_fill_type="NGON",
view_align=False,
enter_editmode=False,
location=(-X / 2 + 1, -Y - 1, Z / 3),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(1, 1, 2),
constraint_axis=(True, True, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
bpy.ops.transform.translate(
value=(0, 0, Z + (Z / 4)),
constraint_axis=(False, False, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
Name("TrouM")
Soustraction("PCBA", "TrouM")
#DIVIDER
bpy.ops.mesh.primitive_torus_add(
location=(-X / 2 + 1, -Y - 1, Z),
rotation=(0, 0, 0),
view_align=False,
major_radius=2,
minor_radius=0.5,
major_segments=28,
minor_segments=6,
use_abso=False,
abso_major_rad=5,
abso_minor_rad=2.5,
)
bpy.ops.transform.translate(
value=(0, 0, Z / 3),
constraint_axis=(False, False, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
Name("TrouT")
#DIVIDER
bpy.context.scene.objects.active = bpy.data.objects["TrouT"]
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "UNION"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects["PCBA"]
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.join()
bpy.context.object.name = "PCBA"
bpy.ops.object.select_all(action="TOGGLE")
#DIVIDER
bpy.ops.mesh.primitive_cube_add(
radius=1,
view_align=False,
enter_editmode=False,
location=(-X + 1.5, -Y - 2, (Z / 2) + (Z / 5)),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(X / 2, 0.8, 2),
constraint_axis=(True, True, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
bpy.context.object.name = "Porte"
bpy.context.scene.objects.active = bpy.data.objects["PCBA"]
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "DIFFERENCE"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects["Porte"]
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Boolean")
bpy.context.scene.objects.active = bpy.data.objects["Porte"]
bpy.ops.object.delete(use_global=False)
#DIVIDER
def MortierB(a):
bpy.ops.mesh.primitive_cylinder_add(
vertices=32,
radius=2,
depth=Z,
end_fill_type="NGON",
view_align=False,
enter_editmode=False,
location=(-X / 2 + 1, Y + 1, Z / 3),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(1, 1, 2),
constraint_axis=(True, True, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
bpy.ops.transform.translate(
value=(0, 0, Z + (Z / 4)),
constraint_axis=(False, False, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
bpy.context.object.name = "TrouM"
#DIVIDER
bpy.context.scene.objects.active = bpy.data.objects["PCBA"]
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "DIFFERENCE"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects["TrouM"]
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Boolean")
bpy.context.scene.objects.active = bpy.data.objects["TrouM"]
bpy.ops.object.delete(use_global=False)
#DIVIDER
bpy.ops.mesh.primitive_torus_add(
location=(-X / 2 + 1, Y + 1, Z),
rotation=(0, 0, 0),
view_align=False,
major_radius=2,
minor_radius=0.5,
major_segments=28,
minor_segments=6,
use_abso=False,
abso_major_rad=5,
abso_minor_rad=2.5,
)
bpy.ops.transform.translate(
value=(0, 0, Z / 3),
constraint_axis=(False, False, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
bpy.context.object.name = "TrouT"
#DIVIDER
bpy.context.scene.objects.active = bpy.data.objects["TrouT"]
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "UNION"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects["PCBA"]
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.join()
bpy.context.object.name = "PCBA"
bpy.ops.object.select_all(action="TOGGLE")
#DIVIDER
bpy.ops.mesh.primitive_cube_add(
radius=1,
view_align=False,
enter_editmode=False,
location=(-X + 1.5, Y + 2, (Z / 2) + (Z / 5)),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(X / 2, 0.8, 2),
constraint_axis=(True, True, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
bpy.context.object.name = "Porte"
bpy.context.scene.objects.active = bpy.data.objects["PCBA"]
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "DIFFERENCE"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects["Porte"]
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Boolean")
bpy.context.scene.objects.active = bpy.data.objects["Porte"]
bpy.ops.object.delete(use_global=False)
#DIVIDER
def AngleA(a):
bpy.ops.mesh.primitive_cube_add(
radius=1,
view_align=False,
enter_editmode=False,
location=(X * 1.8, pos_Y, Z / 3),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(X, Y, Z),
constraint_axis=(True, True, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
bpy.ops.transform.translate(
value=(-X * 2, Y, 0),
constraint_axis=(False, True, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
bpy.context.object.rotation_euler[2] = 0.785398
bpy.context.object.name = "AngleA"
bpy.context.scene.objects.active = bpy.data.objects["PCBA"]
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "DIFFERENCE"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects["AngleA"]
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Boolean")
bpy.context.scene.objects.active = bpy.data.objects["AngleA"]
bpy.ops.object.delete(use_global=False)
#DIVIDER
def AngleB(a):
bpy.ops.mesh.primitive_cube_add(
radius=1,
view_align=False,
enter_editmode=False,
location=(X * 1.8, pos_Y, Z / 3),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(X, Y, Z),
constraint_axis=(True, True, True),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
bpy.ops.transform.translate(
value=(-X * 2, -Y, 0),
constraint_axis=(False, True, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
bpy.context.object.rotation_euler[2] = -0.785398
bpy.context.object.name = "AngleB"
bpy.context.scene.objects.active = bpy.data.objects["PCBA"]
bpy.ops.object.modifier_add(type="BOOLEAN")
bpy.context.object.modifiers["Boolean"].operation = "DIFFERENCE"
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects["AngleB"]
bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Boolean")
bpy.context.scene.objects.active = bpy.data.objects["AngleB"]
bpy.ops.object.delete(use_global=False)
#DIVIDER
def BunkerBasclinique(jh):
PosteCliniqueA(1)
if Prob_Ann >= 9:
AngleA(1)
AngleB(1)
if Prob_Ann == 5:
AngleA(1)
if Prob_Ann == 2:
AngleB(1)
if Y <= 25:
Portes2A(1)
if Y > 25:
Portes3A(1)
if Prob_Mort == 4:
AnnexeA(1)
else:
if Prob_Mort == 4:
AnnexeB(1)
if Prob_Mort >= 7:
BlocA(1)
MortierA(1)
if Prob_Mort < 3:
BlocA(1)
MortierB(1)
if Prob_Mort == 5:
BlocA(1)
MortierA(1)
MortierB(1)
bpy.context.scene.objects.active = bpy.data.objects["PCBA"]
bpy.context.object.name = "PosteDeSecours"
bpy.context.object.data.name = "PosteDeSecours"
bpy.ops.object.select_all(action="TOGGLE")
bpy.ops.object.select_all(action="TOGGLE")
#DIVIDER
#DIVIDER
print(
"-----------------------------------------------Creation du sol----------------------------------------------"
)
#DIVIDER
def Paysage(v1):
bpy.ops.mesh.landscape_add(
AutoUpdate=True,
SphereMesh=False,
SmoothMesh=True,
Subdivision=64,
MeshSize=2,
RandomSeed=0,
NoiseSize=1,
NoiseType=v2,
BasisType="0",
VLBasisType="0",
Distortion=1,
HardNoise=True,
NoiseDepth=6,
mDimension=1,
mLacunarity=2,
mOffset=1,
mGain=1,
MarbleBias="0",
MarbleSharp="0",
MarbleShape="0",
Invert=False,
Height=HS,
Offset=0,
Falloff="1",
Sealevel=-4,
Plateaulevel=HS * 2,
Strata=3,
StrataType="0",
)
Name("Paysage")
bpy.ops.transform.resize(
value=(100, 60, 1),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=False,
)
Rotation(2, 1.5708)
#DIVIDER
def BunkerHaut(v3):
bpy.ops.mesh.primitive_cube_add(
radius=1,
view_align=False,
enter_editmode=False,
location=(0, 0, HS - 3),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
Name("Volcan")
SelectObject("Volcan")
SelectObjectContext("Volcan")
bpy.ops.transform.translate(
value=(-5.36458, 3.86447, 13.3745),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
bpy.context.scene.tool_settings.use_snap = True
bpy.context.scene.tool_settings.snap_element = "VERTEX"
bpy.context.scene.tool_settings.snap_target = "ACTIVE"
bpy.ops.transform.translate(
value=(0, 0, -HS / 4),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
SelectObject("Paysage")
#DIVIDER
bpy.ops.transform.translate(
value=(0, 0, -8),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
bpy.context.scene.tool_settings.use_snap = False
bpy.ops.object.select_all(action="TOGGLE")
#DIVIDER
def BunkerBas(v4):
#DIVIDER
Assemble(1)
"""SelectObject("Volcan")
SelectObjectContext("Volcan")
bpy.ops.transform.translate(value=(-8, 3.86447, HS), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)
bpy.context.scene.tool_settings.use_snap = True
bpy.context.scene.tool_settings.snap_element = 'VERTEX'
bpy.context.scene.tool_settings.snap_target = 'ACTIVE'
bpy.ops.transform.translate(value=(0, 0, -HS/3), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)
SelectObject("Paysage") bpy.ops.transform.translate(value=(0, 0, -2), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)
bpy.context.scene.tool_settings.use_snap = False
bpy.ops.object.select_all(action='TOGGLE')"""
#DIVIDER
def BunkerSol(v5):
bpy.ops.mesh.primitive_cube_add(
radius=1,
view_align=False,
enter_editmode=False,
location=(0, 0, 0),
rotation=(0, 0, 0),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
Name("Volcan")
SelectObject("Volcan")
SelectObjectContext("Volcan")
bpy.ops.transform.translate(
value=(-8, 3.86447, HS),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
bpy.context.scene.tool_settings.use_snap = True
bpy.context.scene.tool_settings.snap_element = "VERTEX"
bpy.context.scene.tool_settings.snap_target = "ACTIVE"
bpy.ops.transform.translate(
value=(0, 0, +HS / 3),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
SelectObject("Paysage")
#DIVIDER
bpy.ops.transform.translate(
value=(0, 0, -HS / 3),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
snap=False,
snap_target="CLOSEST",
snap_point=(0, 0, 0),
snap_align=False,
snap_normal=(0, 0, 0),
texture_space=False,
release_confirm=True,
)
bpy.context.scene.tool_settings.use_snap = False
bpy.ops.object.select_all(action="TOGGLE")
print(
"-----------------------------------------------Bunkerland----------------------------------------------"
)
if HS <= 20 and HS > 5:
v2 = "2"
Paysage(1)
if Doll < 5:
BunkerBas(1)
if Doll >= 5:
AObservationsMultiples(1)
if HS <= 5:
v2 = "2"
Paysage(1)
if Doll <= 3:
BunkerBasclinique(1)
if Doll > 3 and Doll <= 6:
FcbC(1)
if Doll > 6:
AObservationsMultiples(1)
if HS > 20:
v2 = "0"
Paysage(1)
if Doll < 5:
PosteObservationHaut(1)
if Doll >= 5:
FcbC(1)
print("la hauteur du site vaut", HS, "le type de terrain", v2, "les dés donnent", Doll)
#DIVIDER
#DIVIDER
NegatifWilly
Willy
WillyAngles
WillyAngles2
WillyChapeau
WillychapeauHaut
Anglegauche
adoucir
WillyOuvertures
Negatif Deplacer(0 ,0, -2.7) Name(“FCUWillyOuvertureDent1N”) bpy.context.object.dimensions[2] = 1
Dupliquer(0 ,0, 0)
Nouvel fonction
FcuBaseM(1) RegelbauM362262(1)
FcuBaseM(1) RegelbauM162(1)
Appel fonction final FcuBaseM(1) FcuTour(1)
SelectObject(“TourExtension”) Chanfrein(1) Test detail coupure
ECHEC
TrouVue(1)
ExtensionBasseB(1)
ExtensionBasse(1)
Chanfrein(1)
PosteObservationHaut(1)
PosteObservationHaut(1) print(ZE,ZE/9,Haz,Doll,Terra,WallWest)
SelectObject(“Tour Palier”) SelectObjectContext(“Tour Palier”) Supprimer(1)
Boite(pos_X, pos_Y, (Z2)-3,X2,Y*2, 0.3)
Boite(pos_X, pos_Y, (Z2)-3,X2,Y*2, 0.3)
Boite(pos_X-(X+X/2), pos_Y, (Z*2)-2,X,Y, 4)
TourS448(1)
Y/2
-Y/2
-X/2
X/2
TourRectangle(1) TourRectangleIndus(1) DetailPorteTour(1) CreuxTour(1)
TourFL354(1)
ChanfreinVariante(0.1)
Vide
Boite(pos_X+X-1+0.41, pos_Y, Z*2-(Z/3)-3,0.82,3.5, 0.68)
Boite(pos_X+X-1-0.41, pos_Y, Z*2-(Z/3)-3,0.82,3.4, 0.6)
Dernier module Boite(pos_X+X-1-1.23, pos_Y, Z*2-(Z/3)-3,0.82,3.3, 0.5)
Boite(pos_X+X-1+m21, pos_Y, Z*2-(Z/3)-3,0.82,3.5, m24)
Boite(pos_X+X-1+m22, pos_Y, Z*2-(Z/3)-3,0.82,3.4, m24-0.1)
Dernier module
Boite(pos_X+X-1+m23, pos_Y, Z*2-(Z/3)-3,0.82,3.3, m24-0.2)
Dupliquer(X/2+(X/5),0,0) Name(“Poutre1”) SelectObject(“Poutre”) SelectObjectContext(“Poutre”) Dupliquer(X/2+(X/5),0,0) Name(“Poutre2”)
TourDogon(1) OuvertureDents(0.41,-0.41,-1.23,0.68) OuvertureDents2(1) Poutre(1)
TourS487(1)
ChanfreinVariante(0.1)
dents Y/2
Negatif
Rotation(1,0.785398)
dents Y/2
Negatif
Soustraction(“TourDent”,”FinitionNegatifX”)
aussi cheminée
cassure
TourBatman(1) DentsY(1) DentsX(1) DentUnion(1) Finition1(1) EscaliersBatman(1)
TourFL241(1)
Base1(1) TourEtBaseE(1) print(X,Y,Z)
if Doll >=5 : SelectObject(“DentsBaseX”) SelectObjectContext(“DentsBaseX”)
Porte une
Porte une
Annexe une
Annexe deux
Aile A
bpy.ops.transform.resize(value=(1, 3, 1), constraint_axis=(False, False, False), constraint_orientation=’GLOBAL’, mirror=False, proportional=’DISABLED’, proportional_edit_falloff=’SMOOTH’, proportional_size=1, snap=False, snap_target=’CLOSEST’, snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)
JOINDRE
bpy.context.scene.objects.active = bpy.data.objects[“AA”]
Aile B
Cylindre(d,1,1,2,-X/2+1, -Y-1, Z/3)
Mettre le Torus
bpy.context.object.name = “TrouT” Joindre Torus
Rajout d’une porte
soustraire le cylindre
Mettre le Torus
Joindre Torus
Rajout d’une porte
definition du bunker bas clinique###########################################”“
BunkerBasclinique(1)
bpy.context.scene.tool_settings.use_snap = True bpy.context.scene.tool_settings.snap_target = ‘ACTIVE’
bpy.ops.mesh.primitive_cube_add(radius=1, view_align=False, enter_editmode=False, location=(0, 0, HS-3), rotation=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)) Name(“Volcan”)
bpy.context.scene.tool_settings.use_snap = True bpy.context.scene.tool_settings.snap_target = ‘ACTIVE’
bpy.context.scene.tool_settings.use_snap = True bpy.context.scene.tool_settings.snap_target = ‘ACTIVE’
BunkerLand(1)
Paysage(1) BoitePositionné(1)